Ecoer Logo
xinta

@xinta

25

Living a live one step a time | Software Developer | Writer | Whatever

hive.blog/@xinta
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
152.741USD
HIVE
2.489HIVE
HBD
34.873HBD
Own HP
292.118HP

Detailed Balance

HIVE
balance
2.489HIVE
market_balance
0.000HIVE
savings_balance
0.000HIVE
reward_hive_balance
0.000HIVE
HIVE POWER
Own HP
292.118HP
Delegated Out
0.000HP
Delegation In
0.000HP
Effective Power
292.118HP
Reward HP (pending)
0.117HP
HBD
hbd_balance
34.873HBD
hbd_conversions
0.000HBD
hbd_market_balance
0.000HBD
savings_hbd_balance
0.000HBD
reward_hbd_balance
0.025HBD
{
  "balance": "2.489 HIVE",
  "savings_balance": "0.000 HIVE",
  "reward_hive_balance": "0.000 HIVE",
  "vesting_shares": "474212.632032 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "0.000000 VESTS",
  "hbd_balance": "34.873 HBD",
  "savings_hbd_balance": "0.000 HBD",
  "reward_hbd_balance": "0.025 HBD"
}

Account Info

namexinta
id138586
rank0
reputation0
created2017-03-16T09:04:33
recovery_accountsteem
proxyNone
invited_bynull
post_count271
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2019-05-20T18:25:39
last_root_post2019-05-19T21:54:00
last_vote_time2019-10-15T19:01:54
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power9,604
delayed_votesNone
governance_vote_expiration_ts1969-12-31T23:59:59
balance2.489 HIVE
savings_balance0.000 HIVE
hbd_balance34.873 HBD
savings_hbd_balance0.000 HBD
vesting_shares474212.632032 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares0.000000 VESTS
reward_vesting_balance233.074979 VESTS
vesting_balance0.000 HIVE
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update2019-05-11T08:36:09
last_account_update2019-05-11T08:36:09
minedNo
hbd_seconds23,004,051,435
hbd_last_interest_payment2019-05-11T08:14:48
savings_hbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8cFvB8TvMvnXNfAxX3EZnZGM1M2iWVpRU67TA1sQb855DbiBfj",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "2.489 HIVE",
  "can_vote": true,
  "comment_count": 0,
  "created": "2017-03-16T09:04:33",
  "curation_rewards": 599,
  "delayed_votes": [],
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 118553158008,
    "last_update_time": 1571166114
  },
  "governance_vote_expiration_ts": "1969-12-31T23:59:59",
  "guest_bloggers": [],
  "hbd_balance": "34.873 HBD",
  "hbd_last_interest_payment": "2019-05-11T08:14:48",
  "hbd_seconds": "23004051435",
  "hbd_seconds_last_update": "2019-05-18T23:34:03",
  "id": 138586,
  "json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png\",\"name\":\"Xinta\",\"about\":\"Living a live one step a time | Software Developer | Writer | Whatever\",\"location\":\"Italy\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2019-05-11T08:36:09",
  "last_owner_update": "2019-05-11T08:36:09",
  "last_post": "2019-05-20T18:25:39",
  "last_root_post": "2019-05-19T21:54:00",
  "last_vote_time": "2019-10-15T19:01:54",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM6vPjoyZ1hj7UTtFJSe7WYp9YpkNw9ZtM8vLZSs7i61ayh6CnkS",
  "mined": false,
  "name": "xinta",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "open_recurrent_transfers": 0,
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5k9rRVsDr4UGdP7wBvK2o65MDGvLgFsCsDmLP1zrZH8gruhM6Y",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "pending_transfers": 0,
  "post_bandwidth": 10000,
  "post_count": 271,
  "post_history": [],
  "post_voting_power": "474212.632032 VESTS",
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM76KqtUaSRWjuivE9SFSN2TSeoXJ1q6VEiTnA4bU2i4jwemp6H1",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png\",\"name\":\"Xinta\",\"about\":\"Living a live one step a time | Software Developer | Writer | Whatever\",\"location\":\"Italy\"}}",
  "posting_rewards": 336412,
  "previous_owner_update": "1970-01-01T00:00:00",
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "0.000000 VESTS",
  "recovery_account": "steem",
  "reputation": 0,
  "reset_account": "null",
  "reward_hbd_balance": "0.025 HBD",
  "reward_hive_balance": "0.000 HIVE",
  "reward_vesting_balance": "233.074979 VESTS",
  "reward_vesting_hive": "0.117 HIVE",
  "savings_balance": "0.000 HIVE",
  "savings_hbd_balance": "0.000 HBD",
  "savings_hbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_hbd_seconds": "0",
  "savings_hbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 HIVE",
  "vesting_shares": "474212.632032 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": 455478993728,
    "last_update_time": 1571166114
  },
  "voting_power": 9604,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 0
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
therealwolfsent 0.002 HIVE to @xinta- "Hey there xinta. I hope you don’t mind this short message, but I wanted to quickly share this update with you on my Hive-related work. For the past 7 years, I've been deeply committed to Hive, working..."
2024/11/14 07:48:21
amount0.002 HIVE
fromtherealwolf
memoHey there xinta. I hope you don’t mind this short message, but I wanted to quickly share this update with you on my Hive-related work. For the past 7 years, I've been deeply committed to Hive, working on projects like hive.io, vessel, dhive & more to strengthen our community, while providing reliable witness infrastructure to secure our blockchain. Recently, I've released an upgraded witness toolkit (peakd.com/@therealwolf/major-hive-witness-essentials-upgrade-v2) and celebrated 7+ years on Hive (peakd.com/@therealwolf/year-8). If you'd like to support my work, I'd be honored to have your witness vote. Thank you! PS: You can vote for me here: peakd.com/witnesses
toxinta
Transaction InfoBlock #90672483/Trx ddb30fb91df4c335188cb8fa52826399f42e31cb
View Raw JSON Data
{
  "block": 90672483,
  "op": [
    "transfer",
    {
      "amount": "0.002 HIVE",
      "from": "therealwolf",
      "memo": "Hey there xinta. I hope you don’t mind this short message, but I wanted to quickly share this update with you on my Hive-related work. For the past 7 years, I've been deeply committed to Hive, working on projects like hive.io, vessel, dhive & more to strengthen our community, while providing reliable witness infrastructure to secure our blockchain. Recently, I've released an upgraded witness toolkit (peakd.com/@therealwolf/major-hive-witness-essentials-upgrade-v2) and celebrated 7+ years on Hive (peakd.com/@therealwolf/year-8). If you'd like to support my work, I'd be honored to have your witness vote. Thank you! PS: You can vote for me here: peakd.com/witnesses",
      "to": "xinta"
    }
  ],
  "op_in_trx": 8,
  "timestamp": "2024-11-14T07:48:21",
  "trx_id": "ddb30fb91df4c335188cb8fa52826399f42e31cb",
  "trx_in_block": 13,
  "virtual_op": false
}
howosent 0.002 HIVE to @xinta- "Hey @xinta I am launching a new solo witness and am looking for support. If you are unfamiliar with what I do, I wrote a post announcing my witness here: https://peakd.com/witness/@howo/annoucing-my-s..."
2023/11/30 21:29:15
amount0.002 HIVE
fromhowo
memoHey @xinta I am launching a new solo witness and am looking for support. If you are unfamiliar with what I do, I wrote a post announcing my witness here: https://peakd.com/witness/@howo/annoucing-my-solo-witness. The tl;dr is that I've been on Hive for 6 years and for the past 4 I've been working as a core developer meaning I'm working directly on the blockchain code to add features. You might have interacted with some of them already like RC delegations, recurrent transfers or more recently I've been working on updating communities (new update soon !). If you want to support me, could you vote for me as a witness ? You can do it on this page https://peakd.com/me/witnesses. Thank you !
toxinta
Transaction InfoBlock #80625158/Trx 4d8e168f5162aa4a124a1407c0700bd351484965
View Raw JSON Data
{
  "block": 80625158,
  "op": [
    "transfer",
    {
      "amount": "0.002 HIVE",
      "from": "howo",
      "memo": "Hey @xinta I am launching a new solo witness and am looking for support. If you are unfamiliar with what I do, I wrote a post announcing my witness here: https://peakd.com/witness/@howo/annoucing-my-solo-witness. The tl;dr is that I've been on Hive for 6 years and for the past 4 I've been working as a core developer meaning I'm working directly on the blockchain code to add features. You might have interacted with some of them already like RC delegations, recurrent transfers or more recently I've been working on updating communities (new update soon !). If you want to support me, could you vote for me as a witness ? You can do it on this page https://peakd.com/me/witnesses. Thank you !",
      "to": "xinta"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-11-30T21:29:15",
  "trx_id": "4d8e168f5162aa4a124a1407c0700bd351484965",
  "trx_in_block": 26,
  "virtual_op": false
}
howosent 0.001 HBD to @xinta- "Hi ! I've been a core developer on hive for three years now, working on features that are now powering the chain and improving user experience like RC delegations or recurrent transfers and currently ..."
2023/04/22 16:12:24
amount0.001 HBD
fromhowo
memoHi ! I've been a core developer on hive for three years now, working on features that are now powering the chain and improving user experience like RC delegations or recurrent transfers and currently wrapping up some features that will go live in hard fork 27. I'm also hosting the monthly core dev meeting. I would like to carry on working for hive for a fourth year. I am looking for support on my renewed proposal as the current one will expire soon. It's the same deal as the last one. Could you review it and maybe vote on it if it's worth your support ? https://peakd.com/me/proposals/261 Thanks a lot !
toxinta
Transaction InfoBlock #74232959/Trx 28f027c37d0dc37f493975df5484a804caea435d
View Raw JSON Data
{
  "block": 74232959,
  "op": [
    "transfer",
    {
      "amount": "0.001 HBD",
      "from": "howo",
      "memo": "Hi ! I've been a core developer on hive for three years now, working on features that are now powering the chain and improving user experience like RC delegations or recurrent transfers and currently wrapping up some features that will go live in hard fork 27. I'm also hosting the monthly core dev meeting. I would like to carry on working for hive for a fourth year. I am looking for support on my renewed proposal as the current one will expire soon. It's the same deal as the last one. Could you review it and maybe vote on it if it's worth your support ? https://peakd.com/me/proposals/261 Thanks a lot !",
      "to": "xinta"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-04-22T16:12:24",
  "trx_id": "28f027c37d0dc37f493975df5484a804caea435d",
  "trx_in_block": 30,
  "virtual_op": false
}
earn.hivesent 0.001 HIVE to @xinta- "Did you know that you can get rewarded for your witness vote? Cast your witness vote on @earn.hive and start to receive HIVE tokens everyday."
2023/01/15 12:01:54
amount0.001 HIVE
fromearn.hive
memoDid you know that you can get rewarded for your witness vote? Cast your witness vote on @earn.hive and start to receive HIVE tokens everyday.
toxinta
Transaction InfoBlock #71437840/Trx eef742da836d36b14025595b1645dae1849416e0
View Raw JSON Data
{
  "block": 71437840,
  "op": [
    "transfer",
    {
      "amount": "0.001 HIVE",
      "from": "earn.hive",
      "memo": "Did you know that you can get rewarded for your witness vote? Cast your witness vote on @earn.hive and start to receive HIVE tokens everyday.",
      "to": "xinta"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-01-15T12:01:54",
  "trx_id": "eef742da836d36b14025595b1645dae1849416e0",
  "trx_in_block": 124,
  "virtual_op": false
}
xintaaccount expired: @xinta
2022/10/17 11:35:54
View Raw JSON Data
{
  "block": 68848337,
  "op": [
    "expired_account_notification",
    {
      "account": "xinta"
    }
  ],
  "op_in_trx": 5,
  "timestamp": "2022-10-17T11:35:54",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
howosent 0.001 HIVE to @xinta- "Hi, I have been working for the past two years as a core developer on hive. I worked on a lot of things last year some which went live in hard fork 25 already or will go live soon with hard fork 26. T..."
2022/04/09 02:01:42
amount0.001 HIVE
fromhowo
memoHi, I have been working for the past two years as a core developer on hive. I worked on a lot of things last year some which went live in hard fork 25 already or will go live soon with hard fork 26. To name a few, RC delegations, recurrent transfers or communities V2. I would love to continue working on hive for a third year on the next hard fork, communities and everything else. I am looking for support on my renewed proposal as the current one will expire soon. Could you review it and maybe vote on it if it's worth your support ? https://peakd.com/me/proposals/214 Thanks a lot !
toxinta
Transaction InfoBlock #63349007/Trx 4ffc41785a2e7f58cf6a0c455497aec228543dd3
View Raw JSON Data
{
  "block": 63349007,
  "op": [
    "transfer",
    {
      "amount": "0.001 HIVE",
      "from": "howo",
      "memo": "Hi, I have been working for the past two years as a core developer on hive. I worked on a lot of things last year some which went live in hard fork 25 already or will go live soon with hard fork 26. To name a few, RC delegations, recurrent transfers or communities V2. I would love to continue working on hive for a third year on the next hard fork, communities and everything else. I am looking for support on my renewed proposal as the current one will expire soon. Could you review it and maybe vote on it if it's worth your support ? https://peakd.com/me/proposals/214 Thanks a lot !",
      "to": "xinta"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-04-09T02:01:42",
  "trx_id": "4ffc41785a2e7f58cf6a0c455497aec228543dd3",
  "trx_in_block": 36,
  "virtual_op": false
}
2020/03/16 09:38:12
authorsteemitboard
bodyCongratulations @xinta! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@xinta/birthday3.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 3 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@xinta) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=xinta)_</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"]}
parent authorxinta
parent permlinkverso-le-elezioni-europee-2019
permlinksteemitboard-notify-xinta-20200316t093808000z
title
Transaction InfoBlock #41698516/Trx 55bc8bb0d489c652c390639b2a3386a897e62f91
View Raw JSON Data
{
  "block": 41698516,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @xinta! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@xinta/birthday3.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 3 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@xinta) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=xinta)_</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\"]}",
      "parent_author": "xinta",
      "parent_permlink": "verso-le-elezioni-europee-2019",
      "permlink": "steemitboard-notify-xinta-20200316t093808000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-03-16T09:38:12",
  "trx_id": "55bc8bb0d489c652c390639b2a3386a897e62f91",
  "trx_in_block": 4,
  "virtual_op": false
}
2019/10/22 18:15:48
authorluigi-tecnologo
curatorxinta
payout must be claimedtrue
permlinkrecensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p
reward7.902690 VESTS
Transaction InfoBlock #37513240/Virtual Operation 4294967295:11
View Raw JSON Data
{
  "block": 37513240,
  "op": [
    "curation_reward",
    {
      "author": "luigi-tecnologo",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p",
      "reward": "7.902690 VESTS"
    }
  ],
  "op_in_trx": 11,
  "timestamp": "2019-10-22T18:15:48",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintareceived 0.005 HP curation reward for @spi-postit / postit-n-543
2019/10/22 01:10:57
authorspi-postit
curatorxinta
payout must be claimedtrue
permlinkpostit-n-543
reward7.903027 VESTS
Transaction InfoBlock #37492780/Virtual Operation 4294967295:101
View Raw JSON Data
{
  "block": 37492780,
  "op": [
    "curation_reward",
    {
      "author": "spi-postit",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "postit-n-543",
      "reward": "7.903027 VESTS"
    }
  ],
  "op_in_trx": 101,
  "timestamp": "2019-10-22T01:10:57",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintaeffective vote applied for @spi-postit / postit-n-543
2019/10/15 19:01:57
authorspi-postit
pending payout10.415 HBD
permlinkpostit-n-543
rshares9245489668
total vote weight5073004
voterxinta
weight1015 (10.15%)
Transaction InfoBlock #37312955/Trx 94ef363935c72cd61265fd0975adbf02c2b80b2c
View Raw JSON Data
{
  "block": 37312955,
  "op": [
    "effective_comment_vote",
    {
      "author": "spi-postit",
      "pending_payout": "10.415 HBD",
      "permlink": "postit-n-543",
      "rshares": 9245489668,
      "total_vote_weight": 5073004,
      "voter": "xinta",
      "weight": 1015
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-10-15T19:01:57",
  "trx_id": "94ef363935c72cd61265fd0975adbf02c2b80b2c",
  "trx_in_block": 27,
  "virtual_op": true
}
xintaupvoted (100.00%) @spi-postit / postit-n-543
2019/10/15 19:01:57
authorspi-postit
permlinkpostit-n-543
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #37312955/Trx 94ef363935c72cd61265fd0975adbf02c2b80b2c
View Raw JSON Data
{
  "block": 37312955,
  "op": [
    "vote",
    {
      "author": "spi-postit",
      "permlink": "postit-n-543",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-10-15T19:01:57",
  "trx_id": "94ef363935c72cd61265fd0975adbf02c2b80b2c",
  "trx_in_block": 27,
  "virtual_op": false
}
2019/10/15 19:01:15
authorluigi-tecnologo
pending payout0.030 HBD
permlinkrecensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p
rshares9434252641
total vote weight82525
voterxinta
weight4534 (45.34%)
Transaction InfoBlock #37312941/Trx 123281096ff0e2128e8466b467a3dcc443414c8d
View Raw JSON Data
{
  "block": 37312941,
  "op": [
    "effective_comment_vote",
    {
      "author": "luigi-tecnologo",
      "pending_payout": "0.030 HBD",
      "permlink": "recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p",
      "rshares": 9434252641,
      "total_vote_weight": 82525,
      "voter": "xinta",
      "weight": 4534
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-10-15T19:01:15",
  "trx_id": "123281096ff0e2128e8466b467a3dcc443414c8d",
  "trx_in_block": 20,
  "virtual_op": true
}
2019/10/15 19:01:15
authorluigi-tecnologo
permlinkrecensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #37312941/Trx 123281096ff0e2128e8466b467a3dcc443414c8d
View Raw JSON Data
{
  "block": 37312941,
  "op": [
    "vote",
    {
      "author": "luigi-tecnologo",
      "permlink": "recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-10-15T19:01:15",
  "trx_id": "123281096ff0e2128e8466b467a3dcc443414c8d",
  "trx_in_block": 20,
  "virtual_op": false
}
2019/08/31 20:53:21
idfollow
json["follow",{"follower":"xinta","following":"contrabourdon","what":["blog"]}]
required auths[]
required posting auths["xinta"]
Transaction InfoBlock #36038529/Trx 8cfd13cd2b8afa8c9dbebfe7af31cf6d558ace32
View Raw JSON Data
{
  "block": 36038529,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"contrabourdon\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "xinta"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-08-31T20:53:21",
  "trx_id": "8cfd13cd2b8afa8c9dbebfe7af31cf6d558ace32",
  "trx_in_block": 18,
  "virtual_op": false
}
2019/08/31 20:52:15
authorcontrabourdon
permlinkre-xinta-re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190522t001604777z
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #36038507/Trx 6a0229854c1f139c42b9b067b74e7e8c06805963
View Raw JSON Data
{
  "block": 36038507,
  "op": [
    "vote",
    {
      "author": "contrabourdon",
      "permlink": "re-xinta-re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190522t001604777z",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-08-31T20:52:15",
  "trx_id": "6a0229854c1f139c42b9b067b74e7e8c06805963",
  "trx_in_block": 28,
  "virtual_op": false
}
2019/05/27 18:25:39
authorxinta
permlinkre-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z
Transaction InfoBlock #33281410/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 33281410,
  "op": [
    "comment_payout_update",
    {
      "author": "xinta",
      "permlink": "re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2019-05-27T18:25:39",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/27 18:08:54
authorrt-international
curatorxinta
payout must be claimedtrue
permlinkwhistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt
reward19.931980 VESTS
Transaction InfoBlock #33281075/Virtual Operation 4294967295:10
View Raw JSON Data
{
  "block": 33281075,
  "op": [
    "curation_reward",
    {
      "author": "rt-international",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt",
      "reward": "19.931980 VESTS"
    }
  ],
  "op_in_trx": 10,
  "timestamp": "2019-05-27T18:08:54",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintareceived 0.020 HP curation reward for @drewley / 3bcvbr-consolation-no-1-by-liszt
2019/05/27 16:43:06
authordrewley
curatorxinta
payout must be claimedtrue
permlink3bcvbr-consolation-no-1-by-liszt
reward31.891279 VESTS
Transaction InfoBlock #33279362/Virtual Operation 4294967295:7
View Raw JSON Data
{
  "block": 33279362,
  "op": [
    "curation_reward",
    {
      "author": "drewley",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "3bcvbr-consolation-no-1-by-liszt",
      "reward": "31.891279 VESTS"
    }
  ],
  "op_in_trx": 7,
  "timestamp": "2019-05-27T16:43:06",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/27 16:33:18
authorrt-international
curatorxinta
payout must be claimedtrue
permlinkdemocratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad
reward3.986411 VESTS
Transaction InfoBlock #33279166/Virtual Operation 4294967295:13
View Raw JSON Data
{
  "block": 33279166,
  "op": [
    "curation_reward",
    {
      "author": "rt-international",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad",
      "reward": "3.986411 VESTS"
    }
  ],
  "op_in_trx": 13,
  "timestamp": "2019-05-27T16:33:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/26 21:54:00
authorxinta
permlinkverso-le-elezioni-europee-2019
Transaction InfoBlock #33256797/Virtual Operation 4294967295:18
View Raw JSON Data
{
  "block": 33256797,
  "op": [
    "comment_payout_update",
    {
      "author": "xinta",
      "permlink": "verso-le-elezioni-europee-2019"
    }
  ],
  "op_in_trx": 18,
  "timestamp": "2019-05-26T21:54:00",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/26 19:50:39
authorrt-international
curatorxinta
payout must be claimedtrue
permlinkiceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts
reward25.912973 VESTS
Transaction InfoBlock #33254336/Virtual Operation 4294967295:11
View Raw JSON Data
{
  "block": 33254336,
  "op": [
    "curation_reward",
    {
      "author": "rt-international",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts",
      "reward": "25.912973 VESTS"
    }
  ],
  "op_in_trx": 11,
  "timestamp": "2019-05-26T19:50:39",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/26 16:58:21
authordaio
curatorxinta
payout must be claimedtrue
permlinkntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none
reward1.993319 VESTS
Transaction InfoBlock #33250891/Virtual Operation 4294967295:45
View Raw JSON Data
{
  "block": 33250891,
  "op": [
    "curation_reward",
    {
      "author": "daio",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none",
      "reward": "1.993319 VESTS"
    }
  ],
  "op_in_trx": 45,
  "timestamp": "2019-05-26T16:58:21",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/26 14:27:00
authorxinta
permlinklearning-ada-7-generics-and-static-overloading
Transaction InfoBlock #33247868/Virtual Operation 4294967295:9
View Raw JSON Data
{
  "block": 33247868,
  "op": [
    "comment_payout_update",
    {
      "author": "xinta",
      "permlink": "learning-ada-7-generics-and-static-overloading"
    }
  ],
  "op_in_trx": 9,
  "timestamp": "2019-05-26T14:27:00",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintareceived 0.066 HBD reward share for learning-ada-7-generics-and-static-overloading
2019/05/26 14:27:00
authorxinta
author rewards132
beneficiary payout value0.000 HBD
curator payout value0.015 HBD
payout0.066 HBD
permlinklearning-ada-7-generics-and-static-overloading
total payout value0.050 HBD
Transaction InfoBlock #33247868/Virtual Operation 4294967295:8
View Raw JSON Data
{
  "block": 33247868,
  "op": [
    "comment_reward",
    {
      "author": "xinta",
      "author_rewards": 132,
      "beneficiary_payout_value": "0.000 HBD",
      "curator_payout_value": "0.015 HBD",
      "payout": "0.066 HBD",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "total_payout_value": "0.050 HBD"
    }
  ],
  "op_in_trx": 8,
  "timestamp": "2019-05-26T14:27:00",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintareceived 0.025 HBD, 0.081 HP author reward for @xinta / learning-ada-7-generics-and-static-overloading
2019/05/26 14:27:00
authorxinta
curators vesting payout79.733267 VESTS
hbd payout0.025 HBD
hive payout0.000 HIVE
payout must be claimedtrue
permlinklearning-ada-7-generics-and-static-overloading
vesting payout131.559891 VESTS
Transaction InfoBlock #33247868/Virtual Operation 4294967295:7
View Raw JSON Data
{
  "block": 33247868,
  "op": [
    "author_reward",
    {
      "author": "xinta",
      "curators_vesting_payout": "79.733267 VESTS",
      "hbd_payout": "0.025 HBD",
      "hive_payout": "0.000 HIVE",
      "payout_must_be_claimed": true,
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "vesting_payout": "131.559891 VESTS"
    }
  ],
  "op_in_trx": 7,
  "timestamp": "2019-05-26T14:27:00",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintareceived 0.001 HP curation reward for @thiiird / generative-snare-patterns-in-pure-data-exuofqug
2019/05/25 22:16:09
authorthiiird
curatorxinta
payout must be claimedtrue
permlinkgenerative-snare-patterns-in-pure-data-exuofqug
reward1.993409 VESTS
Transaction InfoBlock #33228468/Virtual Operation 4294967295:17
View Raw JSON Data
{
  "block": 33228468,
  "op": [
    "curation_reward",
    {
      "author": "thiiird",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "generative-snare-patterns-in-pure-data-exuofqug",
      "reward": "1.993409 VESTS"
    }
  ],
  "op_in_trx": 17,
  "timestamp": "2019-05-25T22:16:09",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/22 00:16:09
authorcontrabourdon
body@xinta Here's my rendition of this piece :) https://www.youtube.com/watch?v=l8ZUaPZ-DzU
json metadata{"tags":["music"],"users":["xinta"],"image":["https://img.youtube.com/vi/l8ZUaPZ-DzU/0.jpg"],"links":["https://www.youtube.com/watch?v=l8ZUaPZ-DzU"],"app":"steemit/0.1"}
parent authorxinta
parent permlinkre-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z
permlinkre-xinta-re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190522t001604777z
title
Transaction InfoBlock #33115753/Trx 239a82f6e473349a7dc696cb3a0c6b6abeb27839
View Raw JSON Data
{
  "block": 33115753,
  "op": [
    "comment",
    {
      "author": "contrabourdon",
      "body": "@xinta Here's my rendition of this piece :) https://www.youtube.com/watch?v=l8ZUaPZ-DzU",
      "json_metadata": "{\"tags\":[\"music\"],\"users\":[\"xinta\"],\"image\":[\"https://img.youtube.com/vi/l8ZUaPZ-DzU/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=l8ZUaPZ-DzU\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "xinta",
      "parent_permlink": "re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z",
      "permlink": "re-xinta-re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190522t001604777z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-22T00:16:09",
  "trx_id": "239a82f6e473349a7dc696cb3a0c6b6abeb27839",
  "trx_in_block": 8,
  "virtual_op": false
}
2019/05/20 18:42:30
authordaio
pending payout7.212 HBD
permlinkntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none
rshares8908007002
total vote weight3753165
voterxinta
weight1062 (10.62%)
Transaction InfoBlock #33080302/Trx d707e361262111c1ca00977aa3e730fa84883ba8
View Raw JSON Data
{
  "block": 33080302,
  "op": [
    "effective_comment_vote",
    {
      "author": "daio",
      "pending_payout": "7.212 HBD",
      "permlink": "ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none",
      "rshares": 8908007002,
      "total_vote_weight": 3753165,
      "voter": "xinta",
      "weight": 1062
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-20T18:42:30",
  "trx_id": "d707e361262111c1ca00977aa3e730fa84883ba8",
  "trx_in_block": 37,
  "virtual_op": true
}
2019/05/20 18:42:30
authordaio
permlinkntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #33080302/Trx d707e361262111c1ca00977aa3e730fa84883ba8
View Raw JSON Data
{
  "block": 33080302,
  "op": [
    "vote",
    {
      "author": "daio",
      "permlink": "ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-20T18:42:30",
  "trx_id": "d707e361262111c1ca00977aa3e730fa84883ba8",
  "trx_in_block": 37,
  "virtual_op": false
}
2019/05/20 18:26:12
authorxinta
body@@ -1,8 +1,5 @@ -An o +O rgan @@ -3,18 +3,16 @@ gan and -a piano ar
json metadata{"tags":["music"],"image":["https://img.youtube.com/vi/ho9rZjlsyYY/0.jpg"],"links":["https://www.youtube.com/watch?v=ho9rZjlsyYY"],"app":"steemit/0.1"}
parent authoradenijiadeshina
parent permlinkre-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t173153745z
permlinkre-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z
title
Transaction InfoBlock #33079976/Trx 7afb8d0ad2b26597e093005f9f83973bc8227805
View Raw JSON Data
{
  "block": 33079976,
  "op": [
    "comment",
    {
      "author": "xinta",
      "body": "@@ -1,8 +1,5 @@\n-An o\n+O\n rgan\n@@ -3,18 +3,16 @@\n gan and \n-a \n piano ar\n",
      "json_metadata": "{\"tags\":[\"music\"],\"image\":[\"https://img.youtube.com/vi/ho9rZjlsyYY/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=ho9rZjlsyYY\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "adenijiadeshina",
      "parent_permlink": "re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t173153745z",
      "permlink": "re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-20T18:26:12",
  "trx_id": "7afb8d0ad2b26597e093005f9f83973bc8227805",
  "trx_in_block": 24,
  "virtual_op": false
}
2019/05/20 18:25:42
authorxinta
bodyAn organ and a piano are very different. In case you haven't ever heard a (pipe) organ, try listening to this famous piece: https://www.youtube.com/watch?v=ho9rZjlsyYY
json metadata{"tags":["music"],"image":["https://img.youtube.com/vi/ho9rZjlsyYY/0.jpg"],"links":["https://www.youtube.com/watch?v=ho9rZjlsyYY"],"app":"steemit/0.1"}
parent authoradenijiadeshina
parent permlinkre-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t173153745z
permlinkre-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z
title
Transaction InfoBlock #33079966/Trx b3fece40a275b4e5ff81f89b6cca3cc1b7a67a49
View Raw JSON Data
{
  "block": 33079966,
  "op": [
    "comment",
    {
      "author": "xinta",
      "body": "An organ and a piano are very different. In case you haven't ever heard a (pipe) organ, try  listening to this famous piece: https://www.youtube.com/watch?v=ho9rZjlsyYY",
      "json_metadata": "{\"tags\":[\"music\"],\"image\":[\"https://img.youtube.com/vi/ho9rZjlsyYY/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=ho9rZjlsyYY\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "adenijiadeshina",
      "parent_permlink": "re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t173153745z",
      "permlink": "re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-20T18:25:42",
  "trx_id": "b3fece40a275b4e5ff81f89b6cca3cc1b7a67a49",
  "trx_in_block": 45,
  "virtual_op": false
}
xintaeffective vote applied for @drewley / 3bcvbr-consolation-no-1-by-liszt
2019/05/20 18:23:42
authordrewley
pending payout0.057 HBD
permlink3bcvbr-consolation-no-1-by-liszt
rshares9065553637
total vote weight340802
voterxinta
weight17291
Transaction InfoBlock #33079926/Trx 19c3786224faca5aa190bc132c841debcf461ac6
View Raw JSON Data
{
  "block": 33079926,
  "op": [
    "effective_comment_vote",
    {
      "author": "drewley",
      "pending_payout": "0.057 HBD",
      "permlink": "3bcvbr-consolation-no-1-by-liszt",
      "rshares": 9065553637,
      "total_vote_weight": 340802,
      "voter": "xinta",
      "weight": 17291
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-20T18:23:42",
  "trx_id": "19c3786224faca5aa190bc132c841debcf461ac6",
  "trx_in_block": 31,
  "virtual_op": true
}
2019/05/20 18:23:42
authordrewley
permlink3bcvbr-consolation-no-1-by-liszt
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #33079926/Trx 19c3786224faca5aa190bc132c841debcf461ac6
View Raw JSON Data
{
  "block": 33079926,
  "op": [
    "vote",
    {
      "author": "drewley",
      "permlink": "3bcvbr-consolation-no-1-by-liszt",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-20T18:23:42",
  "trx_id": "19c3786224faca5aa190bc132c841debcf461ac6",
  "trx_in_block": 31,
  "virtual_op": false
}
xintacustom json: follow
2019/05/20 18:20:00
idfollow
json["reblog",{"account":"xinta","author":"rt-international","permlink":"whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt"}]
required auths[]
required posting auths["xinta"]
Transaction InfoBlock #33079852/Trx 3641549318f26fb74f766d19eaf919666dff4b53
View Raw JSON Data
{
  "block": 33079852,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"reblog\",{\"account\":\"xinta\",\"author\":\"rt-international\",\"permlink\":\"whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt\"}]",
      "required_auths": [],
      "required_posting_auths": [
        "xinta"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-20T18:20:00",
  "trx_id": "3641549318f26fb74f766d19eaf919666dff4b53",
  "trx_in_block": 40,
  "virtual_op": false
}
2019/05/20 18:19:54
authorrt-international
pending payout0.007 HBD
permlinkwhistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt
rshares9246477611
total vote weight124041
voterxinta
weight32710
Transaction InfoBlock #33079850/Trx b60d6356b624d82bb44e4867162344e8b34950b4
View Raw JSON Data
{
  "block": 33079850,
  "op": [
    "effective_comment_vote",
    {
      "author": "rt-international",
      "pending_payout": "0.007 HBD",
      "permlink": "whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt",
      "rshares": 9246477611,
      "total_vote_weight": 124041,
      "voter": "xinta",
      "weight": 32710
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-20T18:19:54",
  "trx_id": "b60d6356b624d82bb44e4867162344e8b34950b4",
  "trx_in_block": 0,
  "virtual_op": true
}
2019/05/20 18:19:54
authorrt-international
permlinkwhistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #33079850/Trx b60d6356b624d82bb44e4867162344e8b34950b4
View Raw JSON Data
{
  "block": 33079850,
  "op": [
    "vote",
    {
      "author": "rt-international",
      "permlink": "whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-20T18:19:54",
  "trx_id": "b60d6356b624d82bb44e4867162344e8b34950b4",
  "trx_in_block": 0,
  "virtual_op": false
}
2019/05/20 18:18:27
authorrt-international
pending payout0.176 HBD
permlinkdemocratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad
rshares9434252641
total vote weight586960
voterxinta
weight8997 (89.97%)
Transaction InfoBlock #33079821/Trx 2d270949c4952a2f00bb7431206c23d5b3d76d94
View Raw JSON Data
{
  "block": 33079821,
  "op": [
    "effective_comment_vote",
    {
      "author": "rt-international",
      "pending_payout": "0.176 HBD",
      "permlink": "democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad",
      "rshares": 9434252641,
      "total_vote_weight": 586960,
      "voter": "xinta",
      "weight": 8997
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-20T18:18:27",
  "trx_id": "2d270949c4952a2f00bb7431206c23d5b3d76d94",
  "trx_in_block": 8,
  "virtual_op": true
}
2019/05/20 18:18:27
authorrt-international
permlinkdemocratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #33079821/Trx 2d270949c4952a2f00bb7431206c23d5b3d76d94
View Raw JSON Data
{
  "block": 33079821,
  "op": [
    "vote",
    {
      "author": "rt-international",
      "permlink": "democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-20T18:18:27",
  "trx_id": "2d270949c4952a2f00bb7431206c23d5b3d76d94",
  "trx_in_block": 8,
  "virtual_op": false
}
2019/05/20 06:25:15
authorxinta
pending payout0.061 HBD
permlinklearning-ada-7-generics-and-static-overloading
rshares113932330136
total vote weight356696
voterzuerich
weight290664
Transaction InfoBlock #33065565/Trx 8eccee7026a9f9fdc5a18b5603d5a8e9db5274a2
View Raw JSON Data
{
  "block": 33065565,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.061 HBD",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "rshares": 113932330136,
      "total_vote_weight": 356696,
      "voter": "zuerich",
      "weight": 290664
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-20T06:25:15",
  "trx_id": "8eccee7026a9f9fdc5a18b5603d5a8e9db5274a2",
  "trx_in_block": 20,
  "virtual_op": true
}
2019/05/20 06:25:15
authorxinta
permlinklearning-ada-7-generics-and-static-overloading
voterzuerich
weight3000 (30.00%)
Transaction InfoBlock #33065565/Trx 8eccee7026a9f9fdc5a18b5603d5a8e9db5274a2
View Raw JSON Data
{
  "block": 33065565,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "voter": "zuerich",
      "weight": 3000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-20T06:25:15",
  "trx_id": "8eccee7026a9f9fdc5a18b5603d5a8e9db5274a2",
  "trx_in_block": 20,
  "virtual_op": false
}
anisa24effective vote applied for @xinta / verso-le-elezioni-europee-2019
2019/05/19 21:56:57
authorxinta
pending payout0.000 HBD
permlinkverso-le-elezioni-europee-2019
rshares549380455
total vote weight37051
voteranisa24
weight1620 (16.20%)
Transaction InfoBlock #33055408/Trx 6a1b02c001cb9e87e9be95ea24d974cf6bfa2bb6
View Raw JSON Data
{
  "block": 33055408,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.000 HBD",
      "permlink": "verso-le-elezioni-europee-2019",
      "rshares": 549380455,
      "total_vote_weight": 37051,
      "voter": "anisa24",
      "weight": 1620
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-19T21:56:57",
  "trx_id": "6a1b02c001cb9e87e9be95ea24d974cf6bfa2bb6",
  "trx_in_block": 43,
  "virtual_op": true
}
2019/05/19 21:56:57
authorxinta
permlinkverso-le-elezioni-europee-2019
voteranisa24
weight10000 (100.00%)
Transaction InfoBlock #33055408/Trx 6a1b02c001cb9e87e9be95ea24d974cf6bfa2bb6
View Raw JSON Data
{
  "block": 33055408,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "verso-le-elezioni-europee-2019",
      "voter": "anisa24",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T21:56:57",
  "trx_id": "6a1b02c001cb9e87e9be95ea24d974cf6bfa2bb6",
  "trx_in_block": 43,
  "virtual_op": false
}
microboteffective vote applied for @xinta / verso-le-elezioni-europee-2019
2019/05/19 21:55:39
authorxinta
pending payout0.000 HBD
permlinkverso-le-elezioni-europee-2019
rshares805074483
total vote weight28668
votermicrobot
weight3057 (30.57%)
Transaction InfoBlock #33055382/Trx a679eddb3c523edb2590d812e1dbccdad191a2a4
View Raw JSON Data
{
  "block": 33055382,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.000 HBD",
      "permlink": "verso-le-elezioni-europee-2019",
      "rshares": 805074483,
      "total_vote_weight": 28668,
      "voter": "microbot",
      "weight": 3057
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-19T21:55:39",
  "trx_id": "a679eddb3c523edb2590d812e1dbccdad191a2a4",
  "trx_in_block": 18,
  "virtual_op": true
}
2019/05/19 21:55:39
authorxinta
permlinkverso-le-elezioni-europee-2019
votermicrobot
weight500 (5.00%)
Transaction InfoBlock #33055382/Trx a679eddb3c523edb2590d812e1dbccdad191a2a4
View Raw JSON Data
{
  "block": 33055382,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "verso-le-elezioni-europee-2019",
      "voter": "microbot",
      "weight": 500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T21:55:39",
  "trx_id": "a679eddb3c523edb2590d812e1dbccdad191a2a4",
  "trx_in_block": 18,
  "virtual_op": false
}
2019/05/19 21:54:03
authorxinta
bodyQuasi dimenticavo: la prossima settimana, più precisamente il 26 maggio dalle 7 alle 23, si vota per il rinnovo del parlamento europeo. > Si vota per eleggere i deputati che andranno a comporre il Parlamento europeo per i prossimi cinque anni e rappresenteranno gli interessi dei cittadini dell'Unione europea. Così dicono: gli interessi dei cittadini dell'Unione europea… Ci concedono questo parlamento, che carini. > Il Parlamento europeo è l'unica istituzione europea i cui membri sono eletti direttamente dai cittadini […] Ci sono due possibili approcci al voto europeo: - Non votare - Votare Per le elezioni nazionali dico sempre che bisogna andare a votare. Sempre. Anche per scarabocchiare la scheda, ma bisogna andare a votare. Le democrazie europee sono il frutto di un percorso storico, sono imperfette ma sono un equilibrio sorto dalla contrapposizione di forze e circostanze storiche. Non sono **macchinazioni nate a tavolino**, come è il caso dell'UE. Quindi è perfettamente lecito respingere questo “stato” senza territorio, è lecito persino considerarlo alla stregua di una nazione straniera (senza territorio) che sta provando a conquistarci, cioè a un'entità ostile. Hanno persino messo la maschera della democrazia quando hanno provato a far votare la costituzione “europea”, che è stata sonoramente bastonata. Quindi hanno smesso di proporla ai cittadini e l'hanno incorporata nei trattati internazionali, la forma preferita usata per costruire l'UE. Una scelta “fortunata”, visto quant'è difficile per i processi democratici interferire con tali trattati internazionli… Questo punto di vista estremo, chiamiamolo così, giustifica la scelta del non voto, perché andando a votare si legittimerebbe l'esistenza di questo progetto **sovversivo** — sovversivo in quanto sta alterando l'ordine democratico degli stati membri, trasformando la natura delle loro costituzioni e sottraendo loro sovranità. Un punto di vista diverso è quello dice che sì, l'UE non è bella, ma un'UE diversa **partendo da quella che già c'è** è possibile. Questo punto di vista giustifica il voto, proprio perché ha senso andare a votare per far andare nel parlamento dell'UE persone che spingono per il cambiamento necessario. Poi c'è ancora un altro punto di vista che giustifica il voto: quello dell'“europeismo” convinto. Secondo me non possono esistere persone sane di mente che siano anche “europeiste” convinte, cioè che pensano che questa UE sia veramente l'unione europea (notate le minuscole!) a cui devono ambiri gli stati che sorgono sul continente europeo. Scrivo “europeo” tra virgolette per ricordare che l'Europa, il continente, e i suoi stati, non c'entrano: l'UE ha fagocitato l'aggettivo e diciamo “europeismo”, per esempio, ma leggiamo “promozione e supporto di **questa** UE”. Un sincero europeismo, cioè la “promozione e il supporto” degli stati che sono sul continente Europeo, non può che guardare con sospetto a quel carrozzone chiamato UE. Pensando alla geopolitica mi viene in mente quanto è vicina la Russia e quanto sarebbe importante per l'Europa intrattenere con essa più solide e stabili relazioni — tra l'altro sapevate che in realtà parte del territorio russo è effettivamente sul continente europeo, e che comunque, pur essendo questa parte più piccola rispetto a quella asiatica, essa è la più popolata e lì si concentrano la maggior parte delle attività economiche e politiche? Invece dobbiamo barcamenarci tra la necessità di avere relazioni decenti con i russi e la sudditanza agli “Alleati” americani che sono, anche dopo la fine della Guerra Fredda che in realtà non è mai finita ma si è solo assopita per potersi trasformare e modernizzare, i loro arcinemici e s'indispettiscono se gli stati europei sono troppo gentili con i russi. L'UE ha avallato pure le sanzioni contro la Russia, per motivi legati all'egemonia americana, non certo perché è nel migliore interesse europeo nel medio e lungo periodo. Per questo e altri motivi gli “europeisti“ convinti non possono che essere insani, per un motivo o per l'altro. Non vuol dire che sono cattivi: la maggior parte di loro forse si è solo fatta abbindolare dalla retorica pro-UE, così bella, così da cartone animato per bambini… Sono appunto bambini in corpi adulti… Poi ci sono gli “europeisti” convinti e che sono parte del problema; un esempio su tutti che mi viene in mente adesso è la Bonino. Ora, fatemi mettere da parte questa triste categoria e fatemi pensare un po' a quelli del voto per il cambiamento. Vogliono cambiare l'UE dall'interno… ma chi sono questi che sarebbero in grado di farlo? I movimenti euroscettici hanno perso la loro spinta iniziale. Indossano ancora i loro mantelli da supereroi, ma purtroppo sono stati già assorbiti, sono diventati ingranaggi. Penso alla Lega, che è sistemica da molto tempo ormai, e penso al Movimento Cinque Stelle, che ha perso il suo *movimentismo* entrando in parlamento e si è trasformato in una forza politica come altre, almeno sulla questione UE. (Secondo alcuni non è mai stata euroscettica; altrove, anche all'estero, continuano a dipingerli come euroscettica e antisistema; penso che sia una strategia mediatica, l'esatto obiettivo mi sfugge ma dal punto di vista dell'elettorato non è affatto una cosa positiva.) **Non c'è modo di vincere questa battaglia usando gli strumenti messi a disposizione dallo stesso potere che si vorrebbe combattere**. Il potere ha imparato da secoli ad assorbire e gestire il dissenso. Ha imparato che in realtà è necessario che esista un certo **dissenso endemico**. E ha imparato a manipolarlo per i suoi fini. Per esempio anche per mantenere quella parvenza di diversità senza la quale stenteremmo a credere di essere *liberi*. Fate caso però a quanto prepotentemente emerge il *problema* della libertà d'espressione quando un'*espressione* bollata come controversa raggiunge *troppe* persone *troppo* rapidamente, cioè quando non è sotto controllo. Ci stanno già preparando per stringere qualche vite e sigillare qualche porta: purtroppo vedo sempre più spesso, proprio tra le file di chi potrebbe diventare in futuro vittima, sostenitori della limitazione di diverse libertà sulla base del fatto che in questo modo ne risulterebbe una società migliore, più sana, più sicura. Quanti si accorgeranno di essere **liberi solo perché sono irrilevanti**? ## Vi ricordate le elezioni “europee” del 2014? Nel 2014 il PD prese un incredibile 40.81%. Un risultato eccezionale ottenuto anche grazie all'aiuto di Berlusconi, che in pratica fece campagna elettorale a loro favore (apparentemente per limitare l'ascesa del M5S e impedirne una vittoria che poteva essere problematica per gli equilibri europei). Anche a questo giro hanno provato a fare qualcosa di simile, ma ancora non hanno capito se gli conviene puntare i cannoni su Salvini o su Di Maio, cioè sulla Lega o sul M5S. Per questo stanno provando diverse strategie. Da una parte sottolineano costantemente le difficoltà di convivenza di queste due forze politiche nel governo. Questo è un punto morbido in cui è probabile l'affondo di una coltellata e perciò è diventata una costante. Da un'altra parte lanciano gli allarmi di razzismo, fascismo, crollo dei valori occidentali e altre cose del genere. Questo è per andare contro la Lega, più che altro. Contro il M5S il solito tema dell'incompetenza, che ci stanno trascinando nel baratro perché inetti, incapaci e con idee pericolose come il reddito di cittadinanza, buoni solo a dire no. Sono i classici sempreverdi, insieme a dire a ogni occasione che il M5S sta perdendo terreno. Lo sento dire almeno dal boom del 2013. Nel tentativo di compattare il centro destra e far tornare la Lega nel recinto dove giocherebbe a fare da spalla alla rinata Forza Italia, Berlusconi sfodera contro i Cinque Stelle una versione addolcita delle sue famose accuse di comunismo: presenta il M5S come forza di sinistra. E la Meloni gli fa eco. Tutto per allontanarla dalla Lega o, più esattamente, per allontanare la Lega dal M5S. Gli elettori sprovveduti intanto si confondono: per Berlusconi e Meloni il M5S è di sinistra, per la sinistra il M5S è fascista o comunque destrorso, per il M5S il M5S non è né destra né sinistra, come diceva anche Macron per il suo En Marche, peraltro senza beccarsi l'accusa di fascimo — perché *gli storici denoialtri* dicono che né destra né sinistra era uno slogan fascista, quindi chi lo dice deve essere fascista… Insomma, c'è un bel po' di confusione, come al solito. Allora chi votare? Nel dubbio, forse hanno ragione quelli che non andranno a votare. Se dovessi andare a votare, ho solo la certezza che non darò il voto al PD o qualunque forza politica che mostri o abbia mostrato entusiasmo per l'UE. La vedo dura. ![burning-UE.jpg](https://cdn.steemitimages.com/DQma6UTFbydnwvtDyPzQQ4h5pu5KmzXwZPf8hVrisLYykgh/burning-UE.jpg)
json metadata{"tags":["ita","europarlamento","euroscetticismo","politica","europa"],"image":["https://cdn.steemitimages.com/DQma6UTFbydnwvtDyPzQQ4h5pu5KmzXwZPf8hVrisLYykgh/burning-UE.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkita
permlinkverso-le-elezioni-europee-2019
titleVerso le elezioni europee 2019
Transaction InfoBlock #33055350/Trx 5426711f3b6edca946e44b5e4e1c2959e3a67387
View Raw JSON Data
{
  "block": 33055350,
  "op": [
    "comment",
    {
      "author": "xinta",
      "body": "Quasi dimenticavo: la prossima settimana, più precisamente il 26 maggio dalle 7 alle 23, si vota per il rinnovo del parlamento europeo. \n\n> Si vota per eleggere i deputati che andranno a comporre il Parlamento europeo per i prossimi cinque anni e rappresenteranno gli interessi dei cittadini dell'Unione europea.\n\nCosì dicono: gli interessi dei cittadini dell'Unione europea… Ci concedono questo parlamento, che carini.\n\n> Il Parlamento europeo è l'unica istituzione europea i cui membri sono eletti direttamente dai cittadini […]\n\nCi sono due possibili approcci al voto europeo:\n\n- Non votare\n- Votare\n\nPer le elezioni nazionali dico sempre che bisogna andare a votare. Sempre. Anche per scarabocchiare la scheda, ma bisogna andare a votare.\n\nLe democrazie europee sono il frutto di un percorso storico, sono imperfette ma sono un equilibrio sorto dalla contrapposizione di forze e circostanze storiche. Non sono **macchinazioni nate a tavolino**, come è il caso dell'UE.\n\nQuindi è perfettamente lecito respingere questo “stato” senza territorio, è lecito persino considerarlo alla stregua di una nazione straniera (senza territorio) che sta provando a conquistarci, cioè a un'entità ostile.\n\nHanno persino messo la maschera della democrazia quando hanno provato a far votare la costituzione “europea”, che è stata sonoramente bastonata. Quindi hanno smesso di proporla ai cittadini e l'hanno incorporata nei trattati internazionali, la forma preferita usata per costruire l'UE. Una scelta “fortunata”, visto quant'è difficile per i processi democratici interferire con tali trattati internazionli…\n\nQuesto punto di vista estremo, chiamiamolo così, giustifica la scelta del non voto, perché andando a votare si legittimerebbe l'esistenza di questo progetto **sovversivo** — sovversivo in quanto sta alterando l'ordine democratico degli stati membri, trasformando la natura delle loro costituzioni e sottraendo loro sovranità.\n\nUn punto di vista diverso è quello dice che sì, l'UE non è bella, ma un'UE diversa **partendo da quella che già c'è** è possibile. Questo punto di vista giustifica il voto, proprio perché ha senso andare a votare per far andare nel parlamento dell'UE persone che spingono per il cambiamento necessario.\n\nPoi c'è ancora un altro punto di vista che giustifica il voto: quello dell'“europeismo” convinto.\n\nSecondo me non possono esistere persone sane di mente che siano anche “europeiste” convinte, cioè che pensano che questa UE sia veramente l'unione europea (notate le minuscole!) a cui devono ambiri gli stati che sorgono sul continente europeo.\n\nScrivo “europeo” tra virgolette per ricordare che l'Europa, il continente, e i suoi stati, non c'entrano: l'UE ha fagocitato l'aggettivo e diciamo “europeismo”, per esempio, ma leggiamo “promozione e supporto di **questa** UE”.\n\nUn sincero europeismo, cioè la “promozione e il supporto” degli stati che sono sul continente Europeo, non può che guardare con sospetto a quel carrozzone chiamato UE.\n\nPensando alla geopolitica mi viene in mente quanto è vicina la Russia e quanto sarebbe importante per l'Europa intrattenere con essa più solide e stabili relazioni — tra l'altro sapevate che in realtà parte del territorio russo è effettivamente sul continente europeo, e che comunque, pur essendo questa parte più piccola rispetto a quella asiatica, essa è la più popolata e lì si concentrano la maggior parte delle attività economiche e politiche?\n\nInvece dobbiamo barcamenarci tra la necessità di avere relazioni decenti con i russi e la sudditanza agli “Alleati” americani che sono, anche dopo la fine della Guerra Fredda che in realtà non è mai finita ma si è solo assopita per potersi trasformare e modernizzare, i loro arcinemici e s'indispettiscono se gli stati europei sono troppo gentili con i russi. L'UE ha avallato pure le sanzioni contro la Russia, per motivi legati all'egemonia americana, non certo perché è nel migliore interesse europeo nel medio e lungo periodo.\n\nPer questo e altri motivi gli “europeisti“ convinti non possono che essere insani, per un motivo o per l'altro. Non vuol dire che sono cattivi: la maggior parte di loro forse si è solo fatta abbindolare dalla retorica pro-UE, così bella, così da cartone animato per bambini… Sono appunto bambini in corpi adulti…\n\nPoi ci sono gli “europeisti” convinti e che sono parte del problema; un esempio su tutti che mi viene in mente adesso è la Bonino.\n\nOra, fatemi mettere da parte questa triste categoria e fatemi pensare un po' a quelli del voto per il cambiamento.\n\nVogliono cambiare l'UE dall'interno… ma chi sono questi che sarebbero in grado di farlo?\n\nI movimenti euroscettici hanno perso la loro spinta iniziale. Indossano ancora i loro mantelli da supereroi, ma purtroppo sono stati già assorbiti, sono diventati ingranaggi.\n\nPenso alla Lega, che è sistemica da molto tempo ormai, e penso al Movimento Cinque Stelle, che ha perso il suo *movimentismo* entrando in parlamento e si è trasformato in una forza politica come altre, almeno sulla questione UE. (Secondo alcuni non è mai stata euroscettica; altrove, anche all'estero, continuano a dipingerli come euroscettica e antisistema; penso che sia una strategia mediatica, l'esatto obiettivo mi sfugge ma dal punto di vista dell'elettorato non è affatto una cosa positiva.)\n\n**Non c'è modo di vincere questa battaglia usando gli strumenti messi a disposizione dallo stesso potere che si vorrebbe combattere**.\n\nIl potere ha imparato da secoli ad assorbire e gestire il dissenso. Ha imparato che in realtà è necessario che esista un certo **dissenso endemico**. E ha imparato a manipolarlo per i suoi fini. Per esempio anche per mantenere quella parvenza di diversità senza la quale stenteremmo a credere di essere *liberi*.\n\nFate caso però a quanto prepotentemente emerge il *problema* della libertà d'espressione quando un'*espressione* bollata come controversa raggiunge *troppe* persone *troppo* rapidamente, cioè quando non è sotto controllo. Ci stanno già preparando per stringere qualche vite e sigillare qualche porta: purtroppo vedo sempre più spesso, proprio tra le file di chi potrebbe diventare in futuro vittima, sostenitori della limitazione di diverse libertà sulla base del fatto che in questo modo ne risulterebbe una società migliore, più sana, più sicura. Quanti si accorgeranno di essere **liberi solo perché sono irrilevanti**?\n\n\n## Vi ricordate le elezioni “europee” del 2014?\n\nNel 2014 il PD prese un incredibile 40.81%. Un risultato eccezionale ottenuto anche grazie all'aiuto di Berlusconi, che in pratica fece campagna elettorale a loro favore (apparentemente per limitare l'ascesa del M5S e impedirne una vittoria che poteva essere problematica per gli equilibri europei).\n\nAnche a questo giro hanno provato a fare qualcosa di simile, ma ancora non hanno capito se gli conviene puntare i cannoni su Salvini o su Di Maio, cioè sulla Lega o sul M5S.\n\nPer questo stanno provando diverse strategie.\n\nDa una parte sottolineano costantemente le difficoltà di convivenza di queste due forze politiche nel governo. Questo è un punto morbido in cui è probabile l'affondo di una coltellata e perciò è diventata una costante.\n\nDa un'altra parte lanciano gli allarmi di razzismo, fascismo, crollo dei valori occidentali e altre cose del genere. Questo è per andare contro la Lega, più che altro.\n\nContro il M5S il solito tema dell'incompetenza, che ci stanno trascinando nel baratro perché inetti, incapaci e con idee pericolose come il reddito di cittadinanza, buoni solo a dire no. Sono i classici sempreverdi, insieme a dire a ogni occasione che il M5S sta perdendo terreno. Lo sento dire almeno dal boom del 2013.\n\nNel tentativo di compattare il centro destra e far tornare la Lega nel recinto dove giocherebbe a fare da spalla alla rinata Forza Italia, Berlusconi sfodera contro i Cinque Stelle una versione addolcita delle sue famose accuse di comunismo: presenta il M5S come forza di sinistra. E la Meloni gli fa eco. Tutto per allontanarla dalla Lega o, più esattamente, per allontanare la Lega dal M5S.\n\nGli elettori sprovveduti intanto si confondono: per Berlusconi e Meloni il M5S è di sinistra, per la sinistra il M5S è fascista o comunque destrorso, per il M5S il M5S non è né destra né sinistra, come diceva anche Macron per il suo En Marche, peraltro senza beccarsi l'accusa di fascimo — perché *gli storici denoialtri* dicono che né destra né sinistra era uno slogan fascista, quindi chi lo dice deve essere fascista…\n\nInsomma, c'è un bel po' di confusione, come al solito.\n\nAllora chi votare?\n\nNel dubbio, forse hanno ragione quelli che non andranno a votare.\n\nSe dovessi andare a votare, ho solo la certezza che non darò il voto al PD o qualunque forza politica che mostri o abbia mostrato entusiasmo per l'UE.\n\nLa vedo dura.\n\n\n![burning-UE.jpg](https://cdn.steemitimages.com/DQma6UTFbydnwvtDyPzQQ4h5pu5KmzXwZPf8hVrisLYykgh/burning-UE.jpg)",
      "json_metadata": "{\"tags\":[\"ita\",\"europarlamento\",\"euroscetticismo\",\"politica\",\"europa\"],\"image\":[\"https://cdn.steemitimages.com/DQma6UTFbydnwvtDyPzQQ4h5pu5KmzXwZPf8hVrisLYykgh/burning-UE.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "ita",
      "permlink": "verso-le-elezioni-europee-2019",
      "title": "Verso le elezioni europee 2019"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T21:54:03",
  "trx_id": "5426711f3b6edca946e44b5e4e1c2959e3a67387",
  "trx_in_block": 40,
  "virtual_op": false
}
xintafollowed @belemo
2019/05/19 20:06:15
idfollow
json["follow",{"follower":"xinta","following":"belemo","what":["blog"]}]
required auths[]
required posting auths["xinta"]
Transaction InfoBlock #33053194/Trx 50f7ba0b7b5eadd4619ccfd649fd7905feabe1cf
View Raw JSON Data
{
  "block": 33053194,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"belemo\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "xinta"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T20:06:15",
  "trx_id": "50f7ba0b7b5eadd4619ccfd649fd7905feabe1cf",
  "trx_in_block": 13,
  "virtual_op": false
}
xintafollowed @omodei
2019/05/19 20:03:12
idfollow
json["follow",{"follower":"xinta","following":"omodei","what":["blog"]}]
required auths[]
required posting auths["xinta"]
Transaction InfoBlock #33053133/Trx 3d7b2bd2c09c9338c58b77c4c5b2c0cc42c9c398
View Raw JSON Data
{
  "block": 33053133,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"omodei\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "xinta"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T20:03:12",
  "trx_id": "3d7b2bd2c09c9338c58b77c4c5b2c0cc42c9c398",
  "trx_in_block": 3,
  "virtual_op": false
}
2019/05/19 20:00:33
authorrt-international
pending payout0.015 HBD
permlinkiceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts
rshares9434252641
total vote weight181251
voterxinta
weight23632
Transaction InfoBlock #33053080/Trx de860347993878409899603e81247f96c99bf5a6
View Raw JSON Data
{
  "block": 33053080,
  "op": [
    "effective_comment_vote",
    {
      "author": "rt-international",
      "pending_payout": "0.015 HBD",
      "permlink": "iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts",
      "rshares": 9434252641,
      "total_vote_weight": 181251,
      "voter": "xinta",
      "weight": 23632
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-19T20:00:33",
  "trx_id": "de860347993878409899603e81247f96c99bf5a6",
  "trx_in_block": 18,
  "virtual_op": true
}
2019/05/19 20:00:33
authorrt-international
permlinkiceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #33053080/Trx de860347993878409899603e81247f96c99bf5a6
View Raw JSON Data
{
  "block": 33053080,
  "op": [
    "vote",
    {
      "author": "rt-international",
      "permlink": "iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T20:00:33",
  "trx_id": "de860347993878409899603e81247f96c99bf5a6",
  "trx_in_block": 18,
  "virtual_op": false
}
2019/05/19 15:18:39
authorxinta
pending payout0.002 HBD
permlinklearning-ada-7-generics-and-static-overloading
rshares83788030
total vote weight66032
voterpinoy
weight639 (6.39%)
Transaction InfoBlock #33047447/Trx edd912abb5d6fa1c72a73986bdcd21289f19d177
View Raw JSON Data
{
  "block": 33047447,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.002 HBD",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "rshares": 83788030,
      "total_vote_weight": 66032,
      "voter": "pinoy",
      "weight": 639
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-19T15:18:39",
  "trx_id": "edd912abb5d6fa1c72a73986bdcd21289f19d177",
  "trx_in_block": 9,
  "virtual_op": true
}
2019/05/19 15:18:39
authorxinta
permlinklearning-ada-7-generics-and-static-overloading
voterpinoy
weight1000 (10.00%)
Transaction InfoBlock #33047447/Trx edd912abb5d6fa1c72a73986bdcd21289f19d177
View Raw JSON Data
{
  "block": 33047447,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "voter": "pinoy",
      "weight": 1000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T15:18:39",
  "trx_id": "edd912abb5d6fa1c72a73986bdcd21289f19d177",
  "trx_in_block": 9,
  "virtual_op": false
}
2019/05/19 15:03:27
authorxinta
pending payout0.002 HBD
permlinklearning-ada-7-generics-and-static-overloading
rshares3217676514
total vote weight65393
voteryehey
weight32856
Transaction InfoBlock #33047143/Trx b3fd099abfcf29283e5dd430762a18a9da9f5a2f
View Raw JSON Data
{
  "block": 33047143,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.002 HBD",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "rshares": 3217676514,
      "total_vote_weight": 65393,
      "voter": "yehey",
      "weight": 32856
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-19T15:03:27",
  "trx_id": "b3fd099abfcf29283e5dd430762a18a9da9f5a2f",
  "trx_in_block": 2,
  "virtual_op": true
}
2019/05/19 15:03:27
authorxinta
permlinklearning-ada-7-generics-and-static-overloading
voteryehey
weight1000 (10.00%)
Transaction InfoBlock #33047143/Trx b3fd099abfcf29283e5dd430762a18a9da9f5a2f
View Raw JSON Data
{
  "block": 33047143,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "voter": "yehey",
      "weight": 1000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T15:03:27",
  "trx_id": "b3fd099abfcf29283e5dd430762a18a9da9f5a2f",
  "trx_in_block": 2,
  "virtual_op": false
}
2019/05/19 15:02:18
authorthiiird
pending payout1.455 HBD
permlinkgenerative-snare-patterns-in-pure-data-exuofqug
rshares9434252641
total vote weight1712881
voterxinta
weight2249 (22.49%)
Transaction InfoBlock #33047120/Trx 402d8c2b247597c3acf4ecdb7b3cb6fb15579ed0
View Raw JSON Data
{
  "block": 33047120,
  "op": [
    "effective_comment_vote",
    {
      "author": "thiiird",
      "pending_payout": "1.455 HBD",
      "permlink": "generative-snare-patterns-in-pure-data-exuofqug",
      "rshares": 9434252641,
      "total_vote_weight": 1712881,
      "voter": "xinta",
      "weight": 2249
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-19T15:02:18",
  "trx_id": "402d8c2b247597c3acf4ecdb7b3cb6fb15579ed0",
  "trx_in_block": 23,
  "virtual_op": true
}
2019/05/19 15:02:18
authorthiiird
permlinkgenerative-snare-patterns-in-pure-data-exuofqug
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #33047120/Trx 402d8c2b247597c3acf4ecdb7b3cb6fb15579ed0
View Raw JSON Data
{
  "block": 33047120,
  "op": [
    "vote",
    {
      "author": "thiiird",
      "permlink": "generative-snare-patterns-in-pure-data-exuofqug",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T15:02:18",
  "trx_id": "402d8c2b247597c3acf4ecdb7b3cb6fb15579ed0",
  "trx_in_block": 23,
  "virtual_op": false
}
xintafollowed @thiiird
2019/05/19 15:02:00
idfollow
json["follow",{"follower":"xinta","following":"thiiird","what":["blog"]}]
required auths[]
required posting auths["xinta"]
Transaction InfoBlock #33047114/Trx d98ff273d1bf33c8489a768f7293abbadd900f45
View Raw JSON Data
{
  "block": 33047114,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"thiiird\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "xinta"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T15:02:00",
  "trx_id": "d98ff273d1bf33c8489a768f7293abbadd900f45",
  "trx_in_block": 10,
  "virtual_op": false
}
2019/05/19 14:42:06
authorxinta
pending payout0.000 HBD
permlinklearning-ada-7-generics-and-static-overloading
rshares675279885
total vote weight32537
votersteffenix
weight12646
Transaction InfoBlock #33046716/Trx 8608743c6082be971e960578ce12d9ead4e0d5ed
View Raw JSON Data
{
  "block": 33046716,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.000 HBD",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "rshares": 675279885,
      "total_vote_weight": 32537,
      "voter": "steffenix",
      "weight": 12646
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-19T14:42:06",
  "trx_id": "8608743c6082be971e960578ce12d9ead4e0d5ed",
  "trx_in_block": 22,
  "virtual_op": true
}
2019/05/19 14:42:06
authorxinta
permlinklearning-ada-7-generics-and-static-overloading
votersteffenix
weight10000 (100.00%)
Transaction InfoBlock #33046716/Trx 8608743c6082be971e960578ce12d9ead4e0d5ed
View Raw JSON Data
{
  "block": 33046716,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "voter": "steffenix",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T14:42:06",
  "trx_id": "8608743c6082be971e960578ce12d9ead4e0d5ed",
  "trx_in_block": 22,
  "virtual_op": false
}
2019/05/19 14:38:15
authorxinta
pending payout0.000 HBD
permlinklearning-ada-7-generics-and-static-overloading
rshares383362865
total vote weight19891
votergierit
weight14851
Transaction InfoBlock #33046639/Trx ea87ef206412347c1b92aeac7d33a939d6933645
View Raw JSON Data
{
  "block": 33046639,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.000 HBD",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "rshares": 383362865,
      "total_vote_weight": 19891,
      "voter": "gierit",
      "weight": 14851
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-19T14:38:15",
  "trx_id": "ea87ef206412347c1b92aeac7d33a939d6933645",
  "trx_in_block": 4,
  "virtual_op": true
}
2019/05/19 14:38:15
authorxinta
permlinklearning-ada-7-generics-and-static-overloading
votergierit
weight10000 (100.00%)
Transaction InfoBlock #33046639/Trx ea87ef206412347c1b92aeac7d33a939d6933645
View Raw JSON Data
{
  "block": 33046639,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "voter": "gierit",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T14:38:15",
  "trx_id": "ea87ef206412347c1b92aeac7d33a939d6933645",
  "trx_in_block": 4,
  "virtual_op": false
}
2019/05/19 14:27:03
authorxinta
body![007-title.png](https://cdn.steemitimages.com/DQmRcXPVu9xhwNNPxFJfwtfvSSp38xQYnms5x2oekTYN4VF/007-title.png) # Generics Ada has generics. I don't know about Ada of the ancient time, and I don't care — as programmer on the edge of exploration, I don't care about old revisions of a language, unless I have to maintain old code bases. (For example I've been stuck with C++03 and couldn't use C++17 features in my everyday job code.) Other languages has generics in these modern days: Java, C++ (templates), and several others. Syntax differences apart, what's peculiar in Ada is that Ada tends to need the programmer to be explicit in many thing: most of the time he has to express in plain sight what he wants to do and how. So, Ada generics must be instantiated explicitly and you need to assign a name to them. You can do generic packages as well as generic functions and procedures. Formal parameters for the generic are typed, of course, and can be specified so that the client (the programmer using the package, procedure or function) must use the proper type. ## Generic subprograms and packages Let's roll an example: ```ada generic type T is (<>); N : in T; with function "*" (A, B : T) return T is <>; function Multiplier (X : T) return T; ``` What does it mean? We are declaring a generic function `Multiplier`, which takes a single parameter of type `T` and return something of type `T` again. The type T is ```ada type T is (<>); ``` Which simply means that `T` can be any discrete type. Discrete types are integers, modular types, and enumeration. In our little exploration of [Ada's types](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types) I've mentioned modular types (let's call the Ada way into unsigned integers), but didn't show an actual examples, and enumerations too. Let's recall these last two. An example of modular type could be a byte. In Ada you can define the Byte type as follow: ```ada type Byte is mod 256; ``` In modular arithmetic, the last value plus one is the first value. It is like a clock. An enumeration is, well, an enumeration. We've seen the `Character` type. Its syntax is fairly simple: ```ada type Month is (January, February, March, ...); ``` Given a certain value of an enumeration, we go to the next as shown below: ```ada Enumeration_Type'Succ (Enum_Variable); ``` Using the attribute `Prec` we go to the previous value. Back to the generics. When we'll instantiate the generic function, will use one of these kind as argument, because it is how the generic function is declared. Next line of the generic specification is ```ada N : in T; ``` This generic parameter is called `N`, is of type `T`, and looks like `in` parameter — we also say that it is, in fact, an `in` parameter. The last line of the generic specification is ```ada with function "*" (A, B : T) return T is <>; ``` We can pass functions to a generic. In this case we call this function as the binary operator `*`: it takes two T in input and spits out another T. The final `is <>` is quite interesting. It means roughly this: if you don't specify the function when you instantiate the generic, then look for a default for `*` given in the scope of where the generic has been instantiated. The function's implementation will be: ```ada function Multiplier (X : T) return T is begin return N * X; end; ``` Now let's try to instantiate this function: ```ada function Double_It is new Multiplier (Integer, 2); ``` This is how we instantiate the generic `Multiplier`, so that `T` is an `Integer` and `N` is 2. We don't give a function `*` and the surrounding scope has already one (because in fact we can alraedy multiply two integers…) Therefore we can use the `Double_It` function like this: ```ada R : Integer := Double_It (10); ``` The variable `R` will hold 20. If we try to instantiate the function with an incompatible type, we obtain a compile time error. For example, if we write ```ada function Double_It is new Multiplier (Float, 2.0); ``` the compiler stops and says: *expect discrete type in instantiation of "T", instantiation abandoned.* Let's try with this instead: ```ada type Num is (Zero, One, Two, Three, Four, Five, Six); function Double_It is new Multiplier (Num, Two); ``` There isn't any problem with the type and the value Two, but unfortunately the surrounding scope doesn't have the function `*` for that type. We can write one, like this (it must be before the instantiation): ```ada function "*" (A, B : Num) return Num is begin if Num'Pos (A) * Num'Pos (B) <= Num'Pos (Six) then return Num'Val (Num'Pos (A) * Num'Pos (B)); else return Six; end if; end; ``` Given an enumeration type E, `E'Pos (NAME)` gives the number corrisponding to the “position” of the value NAME (for Num, `Zero` has position zero, for example), and `E'Val (N)` is the opposite: it gives the value at position N. We don't need to use the operator as the name of the function. The following works perfectly: ```ada function Star_Op (A, B : Integer) return Integer is begin return A * (B + 1); end Star_Op; function Strangeness is new Multiplier (Integer, 1, Star_Op); ``` It is a good idea to use meaningful names for the generic arguments, and use them when instantiating. This clarifies the use especially when the generic arguments are more than one or two. In the given example, names are too short, likely, to be qualified as acceptable. Anyway, our instantiation can be written like this: ```ada function Strangeness is new Multiplier (T => Integer, N => 6, "*" => Star_Op); ``` In the generic function specification we should have use something more like `Value_Type` instead of `T`, and `Multiplication_Factor` instead of `N`. The following table shows several kind of formal parameters for generics: type|explanation ---|--- `type T is private`|Any *copiable*, definite type, also it doesn't need an initial value; most of the time you want to use this `type T is (<>)`|Any discrete type: integer, modular, enumeration `type T is range <>`|Any signed integer `type T is mod <>`|Any modular type `type T is delta <>`|Any non-decimal fixed-point type `type T is delta <> digits <>`|Any decimal fixed-point type `type T is digits <>`|Any floating point type `type T (<>) is private`|Any *copiable* type, definite or indefinite `type T (<>) is limited private`|Any type, copiable or not, definite or indefinite `type T (<>) is tagged private`|Any copiable, non-abstract tagged type `type T (<>) is new Parent`|Any non-abstract type derived from Parent. `type T (<>) is new Parent with private`|Any non-abstract type derived from tagged type Parent `type T (<>) is tagged limited private`|Any non-abstract tagged type, copiable or not `type T (<>) is abstract tagged private`|Any copiable tagged type, abstract or non-abstract `type T (<>) is abstract tagged limited private`|Any tagged type, abstract or not, copiable or not `type T is array (I) of E`|Any array type with index type I and elements' type E. ![ada-formal-type-generics.png](https://cdn.steemitimages.com/DQmW6c3hTcvyn6tBVwWenVBh9rHu1nxNxtt94LJREG6z2LH/ada-formal-type-generics.png) About types, we have just scratched the surface with a [previous lesson](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types). These lessons aren't meant to cover every details — for those, you need a full-featured tutorial, or dig into the sites promoting Ada, where they also [list resources](https://www.adaic.org/learn/materials/) and you can also [download the standard](http://www.ada-auth.org/arm.html) — not an easy reading, but everything's there! Here a quick, not necessarily exact, tour to make sense of the table above. Think of `<>` (the diamond) as whatever. The keyword `limited` means a type can't be copied (you can't do `A := B`), but in the context of a generic it means it can or it can't. We've seen it in the [lesson on the OO](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm). The `tagged` type in Ada are those type on which the object orientation is built on. See [the fifth lesson](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm). In there I've also covered the `abstract` part. In the generic, it means the type can be abstract, not that it must be abstract. The rest is mostly syntax. For example `private` means just that the generic doesn't know other details about the type, just those expressed by the rest of the clause. In the [Ada 2012 Reference Manual](http://www.ada-europe.org/manuals/LRM-2012.pdf), chapter 12 (Generic Units), you can read other examples. We can learn also a little bit of nomenclature: things like our `N` are called **formal objects**; when we have a type, it's called **formal type** — it's easy; the functions, or procedures, are called **formal subprograms**. When we “create” a specific **instance** of a generic package or subprogram, that's called **instantiation**, as you have already deduced. The types or subprograms or object of a specific instantiation are called **the actuals**. Thus, in our `Double_It`, `Integer` and `2` are the actuals. ## Standard generic package A typical usage of generics is in the containers of the Ada standard library. In these cases we have a generic package. For example *Ada.Containers.Doubly_Linked_Lists*. And we instantiate it like this: ```ada package Ints is new Ada.Containers.Doubly_Linked_Lists (Integer); ``` Now we can have lists of integers: ```ada A_List : Ints.List; ``` Don't forget that `Ints` it's an instance of a (generic) package, so it is, indeed, a package, not a type. That's why we need to write `Ints.List`. Here it is [the specifications of the generic package for the doubly linked lists](https://www.adaic.org/resources/add_content/standards/12rm/html/RM-A-18-3.html). Writing a generic package isn't very much different than writing a generic subprogram. You start with `generic`, followed by your formal types and objects and subprograms, then you can write the package as usual. ```ada generic type Element_Type is private; package Elements_List is -- ... end; ``` This could be how a custom container package begins. Another usage is shown for the IO subprograms. We have `Ada.Text_IO`, but it's `Put` works just for Strings. What about integers? Here how it can be done in code: ```ada package Int_IO is new Ada.Text_IO.Integer_IO (Integer); use Int_IO; ``` Since that lines, the subprogram `Put` (and others) is **overloaded** so that it accept an Integer as input. It is a very common need, so there are already these package that you can `with` (and `use`) when you need to output integer or others as text: ```ada with Ada.Integer_Text_IO; -- integer types with Ada.Float_Text_IO; -- float types ``` If you don't use `use`, you have to write `Ada.Integer_Text_IO.Put`; so, likely you will `use` it somewhere. Both ```ada use Ada.Integer_Text_IO; use Ada.Float_Text_IO; ``` makes visible a subprogram called `Put` (among others). That is, now `Put` is overloaded so that it can accept strings, integers and floats. # Overloading subprograms Overloading is often presented altogether with object oriented paradigm, **but it is a separated concept**. Ada had subprogram overloading *before* it embraced the object oriented paradigm! Here I talk about *overloading outside the OO world*. This is something which is done **statically**, at compile time: there's no need for runtime support. Thus it is different from *dynamic dispatching*, which works only on the first argument (explicit or implicit), i.e. on the object, to select the correct method of the correct “level” of the hierarchy of classes, and it is done at runtime. This wil be shown better in future lessons. Basically we can talk of *overloading* of subprograms when the names of several subprograms are the same, but the types of their parameters are not. Languages like C++ and Java distinguish functions or methods only by their parameters. Ada does it considering also the return value! ```C++ int do_something(int i); int do_something(double i); ``` These two C++ functions are different, but have the same name `do_something`. They return an `int`, and you **can't** add the following: ```C++ double do_something(int i); ``` This conflicts with the previous declaration. Ada thinks differently and the following is good: ```ada function Do_Something (A : Integer) return Integer; function Do_Something (A : Integer) return Float; ``` Which one will be actually called depends on the context of the call. This ```ada A : Integer := Do_Something (10); ``` will call the first version; this ```ada F : Float := Do_Something (10); ``` will call the second version, because it's the one matching the type of the returned value. You must pay attention to subtypes, though. ```ada subtype Alfa_Type is Integer range -10 .. 100; subtype Beta_Type is Integer range -101 .. -11; function Do_Something (A : Alfa_Type) return Beta_Type is begin Put_Line ("Alfa_Type returns Beta_Type"); return (if A <= 0 then A - 11 else -A); end; ``` This gives **error** at compile time (**duplicate body**), because `Alfa_Type` and `Beta_Type` are, from the point of view of the type system, integers (i.e., they are of type `Integer`, even if range restricted), and we have already covered that case! If we create a brand new type, instead, the we can do it: ```ada type Alfa_Type is new Integer range -10 .. 100; type Beta_Type is new Integer range -101 .. -11; function Do_Something (A : Alfa_Type) return Beta_Type is begin Put_Line ("Alfa_Type returns Beta_Type"); return Beta_Type (if A <= 0 then A - 11 else -A); end; ``` I've changed `subtype ... Integer ...` in `type ... new Integer`, and then we need an explicit conversion in the return statement. Now we can play with overloading `Do_Something` with the combination of `Alfa_Type` and `Beta_Type` and anything else! Procedure can be overloaded as well, of course. ```ada type Salute_Type is (Hello, Bye); type Work_Type is (Light, Heavy, Routine); procedure Do_Action (A : Salute_Type); -- (A) procedure Do_Action (A : Work_Type); -- (B) -- ... implementation ... -- ... use example ... Do_Action (Hello); -- call (A) Do_Action (Heavy); -- call (B) ``` # Code As usual I am putting some test code [on github](https://github.com/xeenta/learning-ada). For this lesson, take a look at [007](https://github.com/xeenta/learning-ada/tree/master/src/007). - [dll.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/dll.adb): example of use of the standard generic package `Doubly_Linked_Lists`. It also shows the syntax `for E of L` for iterating over the elements of a container, and alternate use of the *dot* syntax already described in [lesson 5](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm) in *A matter of syntax*. - [generics.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/generics.adb): playing with a generic function, overloading of instances of a generic function, instantiation of generic package, and you can learn also something about enumeration - [overlo.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/overlo.adb): properly on overloading of subprograms **outside the OO world** (static overloading), addressing the quirk with subtypes, and showing that the overloading is done considering the return type too. # Previous lessons In order to make it easier to track back to older lessons, here a list of the current lessons you can read. - [Hello world, basic greeter package, citing contract based programming, aspects, SPARK…](https://steemit.com/ada-lang/@xinta/learning-ada-1-hello-world-basic-greeter-package-citing-contract-based-programming-aspects-spark) - [more on packages, naming conventions, and bits of types](https://steemit.com/ada-lang/@xinta/learning-ada-2-more-on-packages-naming-conventions-and-bits-of-types) - [exploring types](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types) - [predicates](https://steemit.com/ada-lang/@xinta/learning-ada-4-predicates) - [object oriented paradigm](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm) - [tasking](https://steemit.com/programming/@xinta/learning-ada-6-tasking) # Useful links - [Ada Programming wikibook](https://en.wikibooks.org/wiki/Ada_Programming) - [Ada information clearing house](https://www.adaic.org/) - [Ada conformity assessment authority](http://www.ada-auth.org/) - [Ada Europe](http://www.ada-europe.org/) - [Adacore](https://www.adacore.com/) is a company promoting Ada. Check the [GNAT Community Edition](https://www.adacore.com/download) and their [learn Ada subdomain](https://learn.adacore.com/)
json metadata{"tags":["ada-lang","programming","learning"],"image":["https://cdn.steemitimages.com/DQmRcXPVu9xhwNNPxFJfwtfvSSp38xQYnms5x2oekTYN4VF/007-title.png","https://cdn.steemitimages.com/DQmW6c3hTcvyn6tBVwWenVBh9rHu1nxNxtt94LJREG6z2LH/ada-formal-type-generics.png"],"links":["https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types","https://www.adaic.org/learn/materials/","http://www.ada-auth.org/arm.html","https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm","http://www.ada-europe.org/manuals/LRM-2012.pdf","https://www.adaic.org/resources/add_content/standards/12rm/html/RM-A-18-3.html","https://github.com/xeenta/learning-ada","https://github.com/xeenta/learning-ada/tree/master/src/007","https://github.com/xeenta/learning-ada/blob/master/src/007/dll.adb","https://github.com/xeenta/learning-ada/blob/master/src/007/generics.adb","https://github.com/xeenta/learning-ada/blob/master/src/007/overlo.adb","https://steemit.com/ada-lang/@xinta/learning-ada-1-hello-world-basic-greeter-package-citing-contract-based-programming-aspects-spark","https://steemit.com/ada-lang/@xinta/learning-ada-2-more-on-packages-naming-conventions-and-bits-of-types","https://steemit.com/ada-lang/@xinta/learning-ada-4-predicates","https://steemit.com/programming/@xinta/learning-ada-6-tasking","https://en.wikibooks.org/wiki/Ada_Programming","https://www.adaic.org/","http://www.ada-auth.org/","http://www.ada-europe.org/","https://www.adacore.com/","https://www.adacore.com/download","https://learn.adacore.com/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkada-lang
permlinklearning-ada-7-generics-and-static-overloading
titleLearning Ada 7: generics and (static) overloading
Transaction InfoBlock #33046415/Trx 6441fbb4f1ff62fb2677ca95eb2475b2c8940b5a
View Raw JSON Data
{
  "block": 33046415,
  "op": [
    "comment",
    {
      "author": "xinta",
      "body": "![007-title.png](https://cdn.steemitimages.com/DQmRcXPVu9xhwNNPxFJfwtfvSSp38xQYnms5x2oekTYN4VF/007-title.png)\n\n\n# Generics\n\nAda has generics. I don't know about Ada of the ancient time, and I don't care — as programmer on the edge of exploration, I don't care about old revisions of a language, unless I have to maintain old code bases. (For example I've been stuck with C++03 and couldn't use C++17 features in my everyday job code.)\n\nOther languages has generics in these modern days: Java, C++ (templates), and several others.\n\nSyntax differences apart, what's peculiar in Ada is that Ada tends to need the programmer to be explicit in many thing: most of the time he has to express in plain sight what he wants to do and how.\n\nSo, Ada generics must be instantiated explicitly and you need to assign a name to them.\n\nYou can do generic packages as well as generic functions and procedures.\n\nFormal parameters for the generic are typed, of course, and can be specified so that the client (the programmer using the package, procedure or function) must use the proper type.\n\n\n## Generic subprograms and packages\n\nLet's roll an example:\n\n```ada\n   generic\n      type T is (<>);\n      N : in T;\n      with function \"*\" (A, B : T) return T is <>;\n   function Multiplier (X : T) return T;\n```\n\nWhat does it mean?\n\nWe are declaring a generic function `Multiplier`, which takes a single parameter of type `T` and return something of type `T` again.\n\nThe type T is\n\n```ada\ntype T is (<>);\n```\n\nWhich simply means that `T` can be any discrete type. Discrete types are integers, modular types, and enumeration. In our little exploration of [Ada's types](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types) I've mentioned modular types (let's call the Ada way into unsigned integers), but didn't show an actual examples, and enumerations too.\n\nLet's recall these last two.\n\nAn example of modular type could be a byte. In Ada you can define the Byte type as follow:\n\n```ada\ntype Byte is mod 256;\n```\n\nIn modular arithmetic, the last value plus one is the first value. It is like a clock.\n\nAn enumeration is, well, an enumeration. We've seen the `Character` type. Its syntax is fairly simple:\n\n```ada\ntype Month is (January, February, March, ...);\n```\n\nGiven a certain value of an enumeration, we go to the next as shown below:\n\n```ada\nEnumeration_Type'Succ (Enum_Variable);\n```\n\nUsing the attribute `Prec` we go to the previous value.\n\nBack to the generics.\n\nWhen we'll instantiate the generic function, will use one of these kind as argument, because it is how the generic function is declared.\n\nNext line of the generic specification is\n\n```ada\nN : in T;\n```\n\nThis generic parameter is called `N`, is of type `T`, and looks like `in` parameter — we also say that it is, in fact, an `in` parameter.\n\nThe last line of the generic specification is\n\n```ada\nwith function \"*\" (A, B : T) return T is <>;\n```\n\nWe can pass functions to a generic. In this case we call this function as the binary operator `*`: it takes two T in input and spits out another T. The final `is <>` is quite interesting. It means roughly this: if you don't specify the function when you instantiate the generic, then look for a default for `*` given in the scope of where the generic has been instantiated.\n\nThe function's implementation will be:\n\n```ada\n   function Multiplier (X : T) return T is\n   begin\n      return N * X;\n   end;\n```\n\nNow let's try to instantiate this function:\n\n```ada\n   function Double_It is new Multiplier (Integer, 2);\n```\n\nThis is how we instantiate the generic `Multiplier`, so that `T` is an `Integer` and `N` is 2. We don't give a function `*` and the surrounding scope has already one (because in fact we can alraedy multiply two integers…)\n\nTherefore we can use the `Double_It` function like this:\n\n```ada\n R : Integer := Double_It (10);\n```\n\nThe variable `R` will hold 20.\n\nIf we try to instantiate the function with an incompatible type, we obtain a compile time error. For example, if we write\n\n```ada\nfunction Double_It is new Multiplier (Float, 2.0);\n```\n\nthe compiler stops and says: *expect discrete type in instantiation of \"T\", instantiation abandoned.*\n\nLet's try with this instead:\n\n```ada\n   type Num is (Zero, One, Two, Three, Four, Five, Six);\n   function Double_It is new Multiplier (Num, Two);\n```\n\nThere isn't any problem with the type and the value Two, but unfortunately the surrounding scope doesn't have the function `*` for that type.\n\nWe can write one, like this (it must be before the instantiation):\n\n```ada\n   function \"*\" (A, B : Num) return Num is\n   begin\n      if Num'Pos (A) * Num'Pos (B) <= Num'Pos (Six) then\n         return Num'Val (Num'Pos (A) * Num'Pos (B));\n      else\n         return Six;\n      end if;\n   end;\n```\n\nGiven an enumeration type E, `E'Pos (NAME)` gives the number corrisponding to the “position” of the value NAME (for Num, `Zero` has position zero, for example), and `E'Val (N)` is the opposite: it gives the value at position N.\n\nWe don't need to use the operator as the name of the function. The following works perfectly:\n\n```ada\n   function Star_Op (A, B : Integer) return Integer is\n   begin\n      return A * (B + 1);\n   end Star_Op;\n   \n   function Strangeness is new Multiplier (Integer, 1, Star_Op);\n```\n\nIt is a good idea to use meaningful names for the generic arguments, and use them when instantiating. This clarifies the use especially when the generic arguments are more than one or two.\n\nIn the given example, names are too short, likely, to be qualified as acceptable. Anyway, our instantiation can be written like this:\n\n```ada\n   function Strangeness is new Multiplier (T   => Integer, \n                                           N   => 6, \n                                           \"*\" => Star_Op);\n```\n\nIn the generic function specification we should have use something more like `Value_Type` instead of `T`, and `Multiplication_Factor` instead of `N`.\n\nThe following table shows several kind of formal parameters for generics:\n\n\ntype|explanation\n---|---\n`type T is private`|Any *copiable*, definite type, also it doesn't need an initial value; most of the time you want to use this\n`type T is (<>)`|Any discrete type: integer, modular, enumeration\n`type T is range <>`|Any signed integer\n`type T is mod <>`|Any modular type\n`type T is delta <>`|Any non-decimal fixed-point type\n`type T is delta <> digits <>`|Any decimal fixed-point type\n`type T is digits <>`|Any floating point type\n`type T (<>) is private`|Any *copiable* type, definite or indefinite\n`type T (<>) is limited private`|Any type, copiable or not, definite or indefinite\n`type T (<>) is tagged private`|Any copiable, non-abstract tagged type\n`type T (<>) is new Parent`|Any non-abstract type derived from Parent.\n`type T (<>) is new Parent with private`|Any non-abstract type derived from tagged type Parent\n`type T (<>) is tagged limited private`|Any non-abstract tagged type, copiable or not\n`type T (<>) is abstract tagged private`|Any copiable tagged type, abstract or non-abstract\n`type T (<>) is abstract tagged limited private`|Any tagged type, abstract or not, copiable or not\n`type T is array (I) of E`|Any array type with index type I and elements' type E.\n\n![ada-formal-type-generics.png](https://cdn.steemitimages.com/DQmW6c3hTcvyn6tBVwWenVBh9rHu1nxNxtt94LJREG6z2LH/ada-formal-type-generics.png)\n\nAbout types, we have just scratched the surface with a [previous lesson](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types). These lessons aren't meant to cover every details — for those, you need a full-featured tutorial, or dig into the sites promoting Ada, where they also [list resources](https://www.adaic.org/learn/materials/) and you can also [download the standard](http://www.ada-auth.org/arm.html) — not an easy reading, but everything's there!\n\nHere a quick, not necessarily exact, tour to make sense of the table above.\n\nThink of `<>` (the diamond) as whatever.\n\nThe keyword `limited` means a type can't be copied (you can't do `A := B`), but in the context of a generic it means it can or it can't. We've seen it in the [lesson on the OO](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm).\n\nThe `tagged` type in Ada are those type on which the object orientation is built on. See [the fifth lesson](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm). In there I've also covered the `abstract` part. In the generic, it means the type can be abstract, not that it must be abstract.\n\nThe rest is mostly syntax. For example `private` means just that the generic doesn't know other details about the type, just those expressed by the rest of the clause.\n\nIn the [Ada 2012 Reference Manual](http://www.ada-europe.org/manuals/LRM-2012.pdf), chapter 12 (Generic Units), you can read other examples.\n\nWe can learn also a little bit of nomenclature: things like our `N` are called **formal objects**; when we have a type, it's called **formal type** — it's easy; the functions, or procedures, are called **formal subprograms**. When we “create” a specific **instance** of a generic package or subprogram, that's called **instantiation**, as you have already deduced.\n\nThe types or subprograms or object of a specific instantiation are called **the actuals**. Thus, in our `Double_It`, `Integer` and `2` are the actuals.\n\n## Standard generic package\n\nA typical usage of generics is in the containers of the Ada standard library. In these cases we have a generic package. For example *Ada.Containers.Doubly_Linked_Lists*. And we instantiate it like this:\n\n```ada\npackage Ints is new Ada.Containers.Doubly_Linked_Lists (Integer);\n```\n\nNow we can have lists of integers:\n\n```ada\nA_List : Ints.List;\n```\n\nDon't forget that `Ints` it's an instance of a (generic) package, so it is, indeed, a package, not a type. That's why we need to write `Ints.List`.\n\nHere it is [the specifications of the generic package for the doubly linked lists](https://www.adaic.org/resources/add_content/standards/12rm/html/RM-A-18-3.html).\n\nWriting a generic package isn't very much different than writing a generic subprogram. You start with `generic`, followed by your formal types and objects and subprograms, then you can write the package as usual.\n\n```ada\ngeneric\n   type Element_Type is private;\npackage Elements_List is\n   -- ...\nend;\n```\n\nThis could be how a custom container package begins.\n\nAnother usage is shown for the IO subprograms. We have `Ada.Text_IO`, but it's `Put` works just for Strings. What about integers?\n\nHere how it can be done in code:\n\n```ada\n   package Int_IO is new Ada.Text_IO.Integer_IO (Integer);\n   use Int_IO;\n```\n\nSince that lines, the subprogram `Put` (and others) is **overloaded** so that it accept an Integer as input.\n\nIt is a very common need, so there are already these package that you can `with` (and `use`) when you need to output integer or others as text:\n\n```ada\nwith Ada.Integer_Text_IO; -- integer types\nwith Ada.Float_Text_IO;   -- float types\n```\n\nIf you don't use `use`, you have to write `Ada.Integer_Text_IO.Put`; so, likely you will `use` it somewhere. \n\nBoth\n\n```ada\nuse Ada.Integer_Text_IO;\nuse Ada.Float_Text_IO;\n```\n\nmakes visible a subprogram called `Put` (among others). That is, now `Put` is overloaded so that it can accept strings, integers and floats.\n\n\n# Overloading subprograms\n\nOverloading is often presented altogether with object oriented paradigm, **but it is a separated concept**. Ada had subprogram overloading *before* it embraced the object oriented paradigm!\n\nHere I talk about *overloading outside the OO world*. This is something which is done **statically**, at compile time: there's no need for runtime support. Thus it is different from *dynamic dispatching*, which works only on the first argument (explicit or implicit), i.e. on the object, to select the correct method of the correct “level” of the hierarchy of classes, and it is done at runtime. This wil be shown better in future lessons.\n\nBasically we can talk of *overloading* of subprograms when the names of several subprograms are the same, but the types of their parameters are not.\n\nLanguages like C++ and Java distinguish functions or methods only by their parameters. Ada does it considering also the return value!\n\n```C++\nint do_something(int i);\nint do_something(double i);\n```\n\nThese two C++ functions are different, but have the same name `do_something`. They return an `int`, and you **can't** add the following:\n\n```C++\ndouble do_something(int i);\n```\n\nThis conflicts with the previous declaration.\n\nAda thinks differently and the following is good:\n\n```ada\n   function Do_Something (A : Integer) return Integer;\n   function Do_Something (A : Integer) return Float;\n```\n\nWhich one will be actually called depends on the context of the call.\n\nThis\n\n```ada\nA : Integer := Do_Something (10);\n```\n\nwill call the first version; this\n\n```ada\nF : Float := Do_Something (10);\n```\n\nwill call the second version, because it's the one matching the type of the returned value.\n\nYou must pay attention to subtypes, though.\n\n```ada\n   subtype Alfa_Type is Integer range -10 .. 100;\n   subtype Beta_Type is Integer range -101 .. -11;\n   \n   function Do_Something (A : Alfa_Type) return Beta_Type is\n   begin\n      Put_Line (\"Alfa_Type returns Beta_Type\");\n      return (if A <= 0 then A - 11 else -A);\n   end;\n```\n\nThis gives **error** at compile time (**duplicate body**), because `Alfa_Type` and `Beta_Type` are, from the point of view of the type system, integers (i.e., they are of type `Integer`, even if range restricted), and we have already covered that case!\n\nIf we create a brand new type, instead, the we can do it:\n\n```ada\n   type Alfa_Type is new Integer range -10 .. 100;\n   type Beta_Type is new Integer range -101 .. -11;\n   \n   function Do_Something (A : Alfa_Type) return Beta_Type is\n   begin\n      Put_Line (\"Alfa_Type returns Beta_Type\");\n      return Beta_Type (if A <= 0 then A - 11 else -A);\n   end;\n```\n\nI've changed `subtype ... Integer ...` in `type ... new Integer`, and then we need an explicit conversion in the return statement. Now we can play with overloading `Do_Something` with the combination of `Alfa_Type` and `Beta_Type` and anything else!\n\nProcedure can be overloaded as well, of course.\n\n```ada\n   type Salute_Type is (Hello, Bye);\n   type Work_Type   is (Light, Heavy, Routine);\n   \n   procedure Do_Action (A : Salute_Type); -- (A)\n   procedure Do_Action (A : Work_Type);   -- (B)\n   \n   -- ... implementation ...\n   \n   -- ... use example ...\n   Do_Action (Hello); -- call (A)\n   Do_Action (Heavy); -- call (B)\n```\n\n\n# Code\n\nAs usual I am putting some test code [on github](https://github.com/xeenta/learning-ada).\n\nFor this lesson, take a look at [007](https://github.com/xeenta/learning-ada/tree/master/src/007).\n\n- [dll.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/dll.adb): example of use of the standard generic package `Doubly_Linked_Lists`. It also shows the syntax `for E of L` for iterating over the elements of a container, and alternate use of the *dot* syntax already described in [lesson 5](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm) in *A matter of syntax*.\n- [generics.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/generics.adb): playing with a generic function, overloading of instances of a generic function, instantiation of generic package, and you can learn also something about enumeration\n- [overlo.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/overlo.adb): properly on overloading of subprograms **outside the OO world** (static overloading), addressing the quirk with subtypes, and showing that the overloading is done considering the return type too.\n\n\n# Previous lessons\n\nIn order to make it easier to track back to older lessons, here a list of the current lessons you can read.\n\n- [Hello world, basic greeter package, citing contract based programming, aspects, SPARK…](https://steemit.com/ada-lang/@xinta/learning-ada-1-hello-world-basic-greeter-package-citing-contract-based-programming-aspects-spark)\n- [more on packages, naming conventions, and bits of types](https://steemit.com/ada-lang/@xinta/learning-ada-2-more-on-packages-naming-conventions-and-bits-of-types)\n- [exploring types](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types)\n- [predicates](https://steemit.com/ada-lang/@xinta/learning-ada-4-predicates)\n- [object oriented paradigm](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm)\n- [tasking](https://steemit.com/programming/@xinta/learning-ada-6-tasking)\n\n\n# Useful links\n\n- [Ada Programming wikibook](https://en.wikibooks.org/wiki/Ada_Programming)\n- [Ada information clearing house](https://www.adaic.org/)\n- [Ada conformity assessment authority](http://www.ada-auth.org/)\n- [Ada Europe](http://www.ada-europe.org/)\n- [Adacore](https://www.adacore.com/) is a company promoting Ada. Check the [GNAT Community Edition](https://www.adacore.com/download) and their [learn Ada subdomain](https://learn.adacore.com/)",
      "json_metadata": "{\"tags\":[\"ada-lang\",\"programming\",\"learning\"],\"image\":[\"https://cdn.steemitimages.com/DQmRcXPVu9xhwNNPxFJfwtfvSSp38xQYnms5x2oekTYN4VF/007-title.png\",\"https://cdn.steemitimages.com/DQmW6c3hTcvyn6tBVwWenVBh9rHu1nxNxtt94LJREG6z2LH/ada-formal-type-generics.png\"],\"links\":[\"https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types\",\"https://www.adaic.org/learn/materials/\",\"http://www.ada-auth.org/arm.html\",\"https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm\",\"http://www.ada-europe.org/manuals/LRM-2012.pdf\",\"https://www.adaic.org/resources/add_content/standards/12rm/html/RM-A-18-3.html\",\"https://github.com/xeenta/learning-ada\",\"https://github.com/xeenta/learning-ada/tree/master/src/007\",\"https://github.com/xeenta/learning-ada/blob/master/src/007/dll.adb\",\"https://github.com/xeenta/learning-ada/blob/master/src/007/generics.adb\",\"https://github.com/xeenta/learning-ada/blob/master/src/007/overlo.adb\",\"https://steemit.com/ada-lang/@xinta/learning-ada-1-hello-world-basic-greeter-package-citing-contract-based-programming-aspects-spark\",\"https://steemit.com/ada-lang/@xinta/learning-ada-2-more-on-packages-naming-conventions-and-bits-of-types\",\"https://steemit.com/ada-lang/@xinta/learning-ada-4-predicates\",\"https://steemit.com/programming/@xinta/learning-ada-6-tasking\",\"https://en.wikibooks.org/wiki/Ada_Programming\",\"https://www.adaic.org/\",\"http://www.ada-auth.org/\",\"http://www.ada-europe.org/\",\"https://www.adacore.com/\",\"https://www.adacore.com/download\",\"https://learn.adacore.com/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "ada-lang",
      "permlink": "learning-ada-7-generics-and-static-overloading",
      "title": "Learning Ada 7: generics and (static) overloading"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-19T14:27:03",
  "trx_id": "6441fbb4f1ff62fb2677ca95eb2475b2c8940b5a",
  "trx_in_block": 3,
  "virtual_op": false
}
xintaclaimed reward balance: 0.015 HBD, 0.069 HP
2019/05/18 23:34:06
accountxinta
reward hbd0.015 HBD
reward hive0.000 HIVE
reward vests111.680521 VESTS
Transaction InfoBlock #33028564/Trx 7fb29bd296d06db9fb0a72abc908ae2ebd9a4a42
View Raw JSON Data
{
  "block": 33028564,
  "op": [
    "claim_reward_balance",
    {
      "account": "xinta",
      "reward_hbd": "0.015 HBD",
      "reward_hive": "0.000 HIVE",
      "reward_vests": "111.680521 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-18T23:34:06",
  "trx_id": "7fb29bd296d06db9fb0a72abc908ae2ebd9a4a42",
  "trx_in_block": 12,
  "virtual_op": false
}
xintaupdated payout for learning-ada-6-tasking
2019/05/18 09:33:18
authorxinta
permlinklearning-ada-6-tasking
Transaction InfoBlock #33011759/Virtual Operation 4294967295:5
View Raw JSON Data
{
  "block": 33011759,
  "op": [
    "comment_payout_update",
    {
      "author": "xinta",
      "permlink": "learning-ada-6-tasking"
    }
  ],
  "op_in_trx": 5,
  "timestamp": "2019-05-18T09:33:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintareceived 0.042 HBD reward share for learning-ada-6-tasking
2019/05/18 09:33:18
authorxinta
author rewards89
beneficiary payout value0.000 HBD
curator payout value0.009 HBD
payout0.042 HBD
permlinklearning-ada-6-tasking
total payout value0.031 HBD
Transaction InfoBlock #33011759/Virtual Operation 4294967295:4
View Raw JSON Data
{
  "block": 33011759,
  "op": [
    "comment_reward",
    {
      "author": "xinta",
      "author_rewards": 89,
      "beneficiary_payout_value": "0.000 HBD",
      "curator_payout_value": "0.009 HBD",
      "payout": "0.042 HBD",
      "permlink": "learning-ada-6-tasking",
      "total_payout_value": "0.031 HBD"
    }
  ],
  "op_in_trx": 4,
  "timestamp": "2019-05-18T09:33:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintareceived 0.015 HBD, 0.055 HP author reward for @xinta / learning-ada-6-tasking
2019/05/18 09:33:18
authorxinta
curators vesting payout53.845727 VESTS
hbd payout0.015 HBD
hive payout0.000 HIVE
payout must be claimedtrue
permlinklearning-ada-6-tasking
vesting payout89.742878 VESTS
Transaction InfoBlock #33011759/Virtual Operation 4294967295:3
View Raw JSON Data
{
  "block": 33011759,
  "op": [
    "author_reward",
    {
      "author": "xinta",
      "curators_vesting_payout": "53.845727 VESTS",
      "hbd_payout": "0.015 HBD",
      "hive_payout": "0.000 HIVE",
      "payout_must_be_claimed": true,
      "permlink": "learning-ada-6-tasking",
      "vesting_payout": "89.742878 VESTS"
    }
  ],
  "op_in_trx": 3,
  "timestamp": "2019-05-18T09:33:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
xintareceived 0.011 HP curation reward for @zakia / cathedral-of-milan-italy
2019/05/18 08:46:03
authorzakia
curatorxinta
payout must be claimedtrue
permlinkcathedral-of-milan-italy
reward17.948610 VESTS
Transaction InfoBlock #33010815/Virtual Operation 4294967295:7
View Raw JSON Data
{
  "block": 33010815,
  "op": [
    "curation_reward",
    {
      "author": "zakia",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "cathedral-of-milan-italy",
      "reward": "17.948610 VESTS"
    }
  ],
  "op_in_trx": 7,
  "timestamp": "2019-05-18T08:46:03",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/16 10:03:18
authordrifter1
curatorxinta
payout must be claimedtrue
permlinkelectronic-circuit-simulation-static-analysis-implementation-part-1-python
reward3.989033 VESTS
Transaction InfoBlock #32954805/Virtual Operation 4294967295:90
View Raw JSON Data
{
  "block": 32954805,
  "op": [
    "curation_reward",
    {
      "author": "drifter1",
      "curator": "xinta",
      "payout_must_be_claimed": true,
      "permlink": "electronic-circuit-simulation-static-analysis-implementation-part-1-python",
      "reward": "3.989033 VESTS"
    }
  ],
  "op_in_trx": 90,
  "timestamp": "2019-05-16T10:03:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
teameffective vote applied for @xinta / learning-ada-6-tasking
2019/05/11 09:50:12
authorxinta
pending payout0.036 HBD
permlinklearning-ada-6-tasking
rshares80173477549
total vote weight284647
voterteam
weight265945
Transaction InfoBlock #32810617/Trx af4bda8b270afe2447dd90df307e6c51bdaf7b50
View Raw JSON Data
{
  "block": 32810617,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.036 HBD",
      "permlink": "learning-ada-6-tasking",
      "rshares": 80173477549,
      "total_vote_weight": 284647,
      "voter": "team",
      "weight": 265945
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-11T09:50:12",
  "trx_id": "af4bda8b270afe2447dd90df307e6c51bdaf7b50",
  "trx_in_block": 1,
  "virtual_op": true
}
2019/05/11 09:50:12
authorxinta
permlinklearning-ada-6-tasking
voterteam
weight1000 (10.00%)
Transaction InfoBlock #32810617/Trx af4bda8b270afe2447dd90df307e6c51bdaf7b50
View Raw JSON Data
{
  "block": 32810617,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "learning-ada-6-tasking",
      "voter": "team",
      "weight": 1000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-11T09:50:12",
  "trx_id": "af4bda8b270afe2447dd90df307e6c51bdaf7b50",
  "trx_in_block": 1,
  "virtual_op": false
}
bukilandeffective vote applied for @xinta / learning-ada-6-tasking
2019/05/11 09:40:36
authorxinta
pending payout0.000 HBD
permlinklearning-ada-6-tasking
rshares344399752
total vote weight18702
voterbukiland
weight9039 (90.39%)
Transaction InfoBlock #32810425/Trx 6687122a86c2b447b6322826a0b57e95c637d814
View Raw JSON Data
{
  "block": 32810425,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.000 HBD",
      "permlink": "learning-ada-6-tasking",
      "rshares": 344399752,
      "total_vote_weight": 18702,
      "voter": "bukiland",
      "weight": 9039
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-11T09:40:36",
  "trx_id": "6687122a86c2b447b6322826a0b57e95c637d814",
  "trx_in_block": 12,
  "virtual_op": true
}
2019/05/11 09:40:36
authorxinta
permlinklearning-ada-6-tasking
voterbukiland
weight100 (1.00%)
Transaction InfoBlock #32810425/Trx 6687122a86c2b447b6322826a0b57e95c637d814
View Raw JSON Data
{
  "block": 32810425,
  "op": [
    "vote",
    {
      "author": "xinta",
      "permlink": "learning-ada-6-tasking",
      "voter": "bukiland",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-11T09:40:36",
  "trx_id": "6687122a86c2b447b6322826a0b57e95c637d814",
  "trx_in_block": 12,
  "virtual_op": false
}
2019/05/11 09:36:48
idfollow
json["follow",{"follower":"xinta","following":"liondani","what":["blog"]}]
required auths[]
required posting auths["xinta"]
Transaction InfoBlock #32810349/Trx 0ea40b059b6927ef9fe5d5ec9337726217f041f0
View Raw JSON Data
{
  "block": 32810349,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"liondani\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "xinta"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-11T09:36:48",
  "trx_id": "0ea40b059b6927ef9fe5d5ec9337726217f041f0",
  "trx_in_block": 13,
  "virtual_op": false
}
2019/05/11 09:36:15
authorrt-international
permlinkwelcome-to-rt
voterxinta
weight10000 (100.00%)
Transaction InfoBlock #32810338/Trx ee65dd61e57d93b81e484d4eb31f6aeb844af536
View Raw JSON Data
{
  "block": 32810338,
  "op": [
    "vote",
    {
      "author": "rt-international",
      "permlink": "welcome-to-rt",
      "voter": "xinta",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-11T09:36:15",
  "trx_id": "ee65dd61e57d93b81e484d4eb31f6aeb844af536",
  "trx_in_block": 15,
  "virtual_op": false
}
steeming-hoteffective vote applied for @xinta / learning-ada-6-tasking
2019/05/11 09:35:18
authorxinta
pending payout0.000 HBD
permlinklearning-ada-6-tasking
rshares0
total vote weight0
votersteeming-hot
weight0 (0.00%)
Transaction InfoBlock #32810319/Trx 531e64de1a01ee5784d2f2b2dcd57715f681e986
View Raw JSON Data
{
  "block": 32810319,
  "op": [
    "effective_comment_vote",
    {
      "author": "xinta",
      "pending_payout": "0.000 HBD",
      "permlink": "learning-ada-6-tasking",
      "rshares": 0,
      "total_vote_weight": 0,
      "voter": "steeming-hot",
      "weight": 0
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-11T09:35:18",
  "trx_id": "531e64de1a01ee5784d2f2b2dcd57715f681e986",
  "trx_in_block": 7,
  "virtual_op": true
}

Account Metadata

POSTING JSON METADATA
profile{"profile_image":"https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png","name":"Xinta","about":"Living a live one step a time | Software Developer | Writer | Whatever","location":"Italy"}
JSON METADATA
profile{"profile_image":"https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png","name":"Xinta","about":"Living a live one step a time | Software Developer | Writer | Whatever","location":"Italy"}
{
  "posting_json_metadata": {
    "profile": {
      "profile_image": "https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png",
      "name": "Xinta",
      "about": "Living a live one step a time | Software Developer | Writer | Whatever",
      "location": "Italy"
    }
  },
  "json_metadata": {
    "profile": {
      "profile_image": "https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png",
      "name": "Xinta",
      "about": "Living a live one step a time | Software Developer | Writer | Whatever",
      "location": "Italy"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM5k9rRVsDr4UGdP7wBvK2o65MDGvLgFsCsDmLP1zrZH8gruhM6Y1/1
Active
Single Signature
Public Keys
STM8cFvB8TvMvnXNfAxX3EZnZGM1M2iWVpRU67TA1sQb855DbiBfj1/1
Posting
Single Signature
Public Keys
STM76KqtUaSRWjuivE9SFSN2TSeoXJ1q6VEiTnA4bU2i4jwemp6H11/1
Memo
STM6vPjoyZ1hj7UTtFJSe7WYp9YpkNw9ZtM8vLZSs7i61ayh6CnkS
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5k9rRVsDr4UGdP7wBvK2o65MDGvLgFsCsDmLP1zrZH8gruhM6Y",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8cFvB8TvMvnXNfAxX3EZnZGM1M2iWVpRU67TA1sQb855DbiBfj",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM76KqtUaSRWjuivE9SFSN2TSeoXJ1q6VEiTnA4bU2i4jwemp6H1",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM6vPjoyZ1hj7UTtFJSe7WYp9YpkNw9ZtM8vLZSs7i61ayh6CnkS"
}

Witness Votes

0 / 30
No active witness votes.
[]