Ecoer Logo
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS11.29%
Net Worth
14.121USD
STEEM
0.001STEEM
SBD
25.012SBD
Own SP
32.906SP

Detailed Balance

STEEM
balance
0.001STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
32.906SP
Delegated Out
0.000SP
Delegation In
0.000SP
Effective Power
32.906SP
Reward SP (pending)
0.000SP
SBD
sbd_balance
25.012SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.000SBD
{
  "balance": "0.001 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "53583.276597 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "0.000000 VESTS",
  "sbd_balance": "25.012 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.000 SBD",
  "conversions": []
}

Account Info

namemaraoz
id24531
rank59,355
reputation171698527727
created2016-07-15T18:15:30
recovery_accountsteem
proxyNone
post_count4
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2016-08-01T21:23:24
last_root_post2016-08-01T21:23:24
last_vote_time2016-08-18T19:24:24
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power9,949
delayed_votes0
balance0.001 STEEM
savings_balance0.000 STEEM
sbd_balance25.012 SBD
savings_sbd_balance0.000 SBD
vesting_shares53583.276597 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares0.000000 VESTS
reward_vesting_balance0.000000 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update1970-01-01T00:00:00
minedNo
sbd_seconds0
sbd_last_interest_payment2016-08-02T09:46:30
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "id": 24531,
  "name": "maraoz",
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM64uXskKkia8TFMJZ23rEUi41Pwqd9ChQMK6xq5RibgHKWoHF5j",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6pKkcEc2BYfM8fjTYt9s5LVKayvS9N5RTo9fS5wZHWxBZArxnp",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7Wqg4aozM5aFsKK944HnEgUYqM9Jb3pPf2rePrSw4w87VYj85K",
        1
      ]
    ]
  },
  "memo_key": "STM5iq4o8LKwYxs4i7xaLvH75PfUctJaHeP7fGCC7xM7dz67LW9Jg",
  "json_metadata": "",
  "posting_json_metadata": "",
  "proxy": "",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_account_update": "1970-01-01T00:00:00",
  "created": "2016-07-15T18:15:30",
  "mined": false,
  "recovery_account": "steem",
  "last_account_recovery": "1970-01-01T00:00:00",
  "reset_account": "null",
  "comment_count": 0,
  "lifetime_vote_count": 0,
  "post_count": 4,
  "can_vote": true,
  "voting_manabar": {
    "current_mana": 9949,
    "last_update_time": 1471548264
  },
  "downvote_manabar": {
    "current_mana": 0,
    "last_update_time": 1468606530
  },
  "voting_power": 9949,
  "balance": "0.001 STEEM",
  "savings_balance": "0.000 STEEM",
  "sbd_balance": "25.012 SBD",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2016-08-02T09:46:30",
  "sbd_last_interest_payment": "2016-08-02T09:46:30",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "reward_sbd_balance": "0.000 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "0.000000 VESTS",
  "reward_vesting_steem": "0.000 STEEM",
  "vesting_shares": "53583.276597 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "0.000000 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "withdrawn": 0,
  "to_withdraw": 0,
  "withdraw_routes": 0,
  "curation_rewards": 6,
  "posting_rewards": 14132,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "witnesses_voted_for": 0,
  "last_post": "2016-08-01T21:23:24",
  "last_root_post": "2016-08-01T21:23:24",
  "last_vote_time": "2016-08-18T19:24:24",
  "post_bandwidth": 10000,
  "pending_claimed_accounts": 0,
  "vesting_balance": "0.000 STEEM",
  "reputation": "171698527727",
  "transfer_history": [],
  "market_history": [],
  "post_history": [],
  "vote_history": [],
  "other_history": [],
  "witness_votes": [],
  "tags_usage": [],
  "guest_bloggers": [],
  "rank": 59355
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
executive-boardsent 0.001 STEEM to @maraoz- "❗ Hello maraoz, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the most ..."
2020/12/28 17:44:06
fromexecutive-board
tomaraoz
amount0.001 STEEM
memo❗ Hello maraoz, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the most coins. It's easy, just follow the instructions. Warm regards, The Executive Board.
Transaction InfoBlock #49845676/Trx 84d7594256642cebfffb3dcffba8bbf411fd0805
View Raw JSON Data
{
  "trx_id": "84d7594256642cebfffb3dcffba8bbf411fd0805",
  "block": 49845676,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-28T17:44:06",
  "op": [
    "transfer",
    {
      "from": "executive-board",
      "to": "maraoz",
      "amount": "0.001 STEEM",
      "memo": "❗ Hello maraoz, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the most coins. It's easy, just follow the instructions. Warm regards, The Executive Board."
    }
  ]
}
2020/12/28 17:43:45
parent author
parent permlinkethereum
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
title[deleted]
body--
json metadata{"app":"steemit/0.2","format":"markdown"}
Transaction InfoBlock #49845669/Trx bd102f0a1da14ee9f005db6bdfdbaad2642188e9
View Raw JSON Data
{
  "trx_id": "bd102f0a1da14ee9f005db6bdfdbaad2642188e9",
  "block": 49845669,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-28T17:43:45",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "ethereum",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "title": "[deleted]",
      "body": "--",
      "json_metadata": "{\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
    }
  ]
}
2020/12/28 17:43:15
parent author
parent permlinkintroduceyourself
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
title[deleted]
body--
json metadata{"app":"steemit/0.2","format":"markdown"}
Transaction InfoBlock #49845659/Trx a0ed91a4cf014918c40d900b1d5e270c7b2ece3c
View Raw JSON Data
{
  "trx_id": "a0ed91a4cf014918c40d900b1d5e270c7b2ece3c",
  "block": 49845659,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-28T17:43:15",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "introduceyourself",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "title": "[deleted]",
      "body": "--",
      "json_metadata": "{\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
    }
  ]
}
2020/12/28 17:42:18
parent author
parent permlinkmarketplace
authormaraoz
permlinkselling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg
title[deleted]
body--
json metadata{"app":"steemit/0.2","format":"markdown"}
Transaction InfoBlock #49845640/Trx 4e5e74c102b978afa5404331f2ea12f8bc4fe8c1
View Raw JSON Data
{
  "trx_id": "4e5e74c102b978afa5404331f2ea12f8bc4fe8c1",
  "block": 49845640,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-28T17:42:18",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "marketplace",
      "author": "maraoz",
      "permlink": "selling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg",
      "title": "[deleted]",
      "body": "--",
      "json_metadata": "{\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
    }
  ]
}
2020/07/08 17:55:09
parent authormaraoz
parent permlinkselling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg
authortheartistmsg
permlinkqd5wfy
title
bodywere you able to sell this?
json metadata{"app":"steemit/0.2"}
Transaction InfoBlock #44933150/Trx d66634b4f62222e4b3d484b3417727a15dd03b22
View Raw JSON Data
{
  "trx_id": "d66634b4f62222e4b3d484b3417727a15dd03b22",
  "block": 44933150,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-07-08T17:55:09",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "selling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg",
      "author": "theartistmsg",
      "permlink": "qd5wfy",
      "title": "",
      "body": "were you able to sell this?",
      "json_metadata": "{\"app\":\"steemit/0.2\"}"
    }
  ]
}
2019/07/15 20:01:48
parent authormaraoz
parent permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
authorsteemitboard
permlinksteemitboard-notify-maraoz-20190715t200148000z
title
bodyCongratulations @maraoz! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@maraoz/birthday3.png</td><td>Happy 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/@maraoz) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=maraoz)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #34692634/Trx 54c714684fdd1881c986bbd14e8ae6f09218ad2d
View Raw JSON Data
{
  "trx_id": "54c714684fdd1881c986bbd14e8ae6f09218ad2d",
  "block": 34692634,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-07-15T20:01:48",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-maraoz-20190715t200148000z",
      "title": "",
      "body": "Congratulations @maraoz! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@maraoz/birthday3.png</td><td>Happy 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/@maraoz) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=maraoz)_</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\"]}"
    }
  ]
}
2018/05/18 22:17:09
parent authormaraoz
parent permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
authornachocarballeda
permlinkre-maraoz-hi-i-m-manuel-araoz-a-software-developer-from-argentina-20180518t221708359z
title
bodyHola Manu, estamos haciendo una comunidad steemit argentina via telegram , si te copa podes unirte saludos https://t.me/steemitargentina
json metadata{"tags":["introduceyourself"],"links":["https://t.me/steemitargentina"],"app":"steemit/0.1"}
Transaction InfoBlock #22549834/Trx 6891cc75857a67a0f3bb101ae32c74d9a55cfa58
View Raw JSON Data
{
  "trx_id": "6891cc75857a67a0f3bb101ae32c74d9a55cfa58",
  "block": 22549834,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-18T22:17:09",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "author": "nachocarballeda",
      "permlink": "re-maraoz-hi-i-m-manuel-araoz-a-software-developer-from-argentina-20180518t221708359z",
      "title": "",
      "body": "Hola Manu, estamos haciendo una comunidad steemit argentina via telegram , si te copa podes unirte saludos \nhttps://t.me/steemitargentina",
      "json_metadata": "{\"tags\":[\"introduceyourself\"],\"links\":[\"https://t.me/steemitargentina\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2017/07/19 06:59:18
parent authormaraoz
parent permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
authorqed
permlinkre-maraoz-the-hitchhiker-s-guide-to-smart-contracts-in-ethereum-20170719t065917627z
title
bodyHi, thanks for the post. Can you tell me if calling data from the web, via a smart contract, is hard to implement, secure and sensible?
json metadata{"tags":["ethereum"],"app":"steemit/0.1"}
Transaction InfoBlock #13813007/Trx 2eaf18f985b2d044c023e028cd32bf2d33283eef
View Raw JSON Data
{
  "trx_id": "2eaf18f985b2d044c023e028cd32bf2d33283eef",
  "block": 13813007,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-07-19T06:59:18",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "author": "qed",
      "permlink": "re-maraoz-the-hitchhiker-s-guide-to-smart-contracts-in-ethereum-20170719t065917627z",
      "title": "",
      "body": "Hi, thanks for the post.\n\nCan you tell me if calling data from the web, via a smart contract, is hard to implement, secure and sensible?",
      "json_metadata": "{\"tags\":[\"ethereum\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2017/07/15 18:29:12
parent authormaraoz
parent permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
authorsteemitboard
permlinksteemitboard-notify-maraoz-20170715t182912000z
title
bodyCongratulations @maraoz! You have received a personal award! [![](https://steemitimages.com/70x70/http://steemitboard.com/@maraoz/birthday1.png)](http://steemitboard.com/@maraoz) Happy Birthday - 1 Year on Steemit Click on the badge to view your own Board of Honor on SteemitBoard. For more information about this award, click [here](https://steemit.com/steemitboard/@steemitboard/steemitboard-update-8-happy-birthday) > By upvoting this notification, you can help all Steemit users. Learn how [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!
json metadata{"image":["https://steemitboard.com/img/notifications.png"]}
Transaction InfoBlock #13711640/Trx e56c8c099b42c095f01f3656c9f911e3eab8c18a
View Raw JSON Data
{
  "trx_id": "e56c8c099b42c095f01f3656c9f911e3eab8c18a",
  "block": 13711640,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-07-15T18:29:12",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-maraoz-20170715t182912000z",
      "title": "",
      "body": "Congratulations @maraoz! You have received a personal award!\n\n[![](https://steemitimages.com/70x70/http://steemitboard.com/@maraoz/birthday1.png)](http://steemitboard.com/@maraoz) Happy Birthday - 1 Year on Steemit\nClick on the badge to view your own Board of Honor on SteemitBoard.\n\nFor more information about this award, click [here](https://steemit.com/steemitboard/@steemitboard/steemitboard-update-8-happy-birthday)\n> By upvoting this notification, you can help all Steemit users. Learn how [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notifications.png\"]}"
    }
  ]
}
2017/06/20 05:59:24
voterhueso
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #12978174/Trx 77fa7c25799d9f5fec06793edb5b89a83011455d
View Raw JSON Data
{
  "trx_id": "77fa7c25799d9f5fec06793edb5b89a83011455d",
  "block": 12978174,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-06-20T05:59:24",
  "op": [
    "vote",
    {
      "voter": "hueso",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2017/06/01 21:21:12
voterascares
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #12449855/Trx a5cf44009ccbe7174e011cb8233aabb4a2425497
View Raw JSON Data
{
  "trx_id": "a5cf44009ccbe7174e011cb8233aabb4a2425497",
  "block": 12449855,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-06-01T21:21:12",
  "op": [
    "vote",
    {
      "voter": "ascares",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2017/05/15 21:18:03
voterfloradanes
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #11960616/Trx 65874d607bd0f55b721d0ed768e3f1cf5af9a719
View Raw JSON Data
{
  "trx_id": "65874d607bd0f55b721d0ed768e3f1cf5af9a719",
  "block": 11960616,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-05-15T21:18:03",
  "op": [
    "vote",
    {
      "voter": "floradanes",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2017/05/14 16:55:39
votermaxse
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #11926586/Trx 56a4bf4f97b8a4c3368c3af0113e138343ee1228
View Raw JSON Data
{
  "trx_id": "56a4bf4f97b8a4c3368c3af0113e138343ee1228",
  "block": 11926586,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-05-14T16:55:39",
  "op": [
    "vote",
    {
      "voter": "maxse",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2017/03/21 15:35:57
voterdwil30
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #10371751/Trx 1335e8ed2a959ba72d1d8e3b1fb1a99dcbd7d13c
View Raw JSON Data
{
  "trx_id": "1335e8ed2a959ba72d1d8e3b1fb1a99dcbd7d13c",
  "block": 10371751,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-03-21T15:35:57",
  "op": [
    "vote",
    {
      "voter": "dwil30",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2017/01/20 14:41:09
votervongohren
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #8644285/Trx 235b70c6a073bf010330f89c59974434a9dc9dc7
View Raw JSON Data
{
  "trx_id": "235b70c6a073bf010330f89c59974434a9dc9dc7",
  "block": 8644285,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-01-20T14:41:09",
  "op": [
    "vote",
    {
      "voter": "vongohren",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2017/01/03 21:32:57
voterpklinger
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #8164289/Trx 03d8d84cb5655ab82db95e805d890d0089322022
View Raw JSON Data
{
  "trx_id": "03d8d84cb5655ab82db95e805d890d0089322022",
  "block": 8164289,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-01-03T21:32:57",
  "op": [
    "vote",
    {
      "voter": "pklinger",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/10/28 12:48:09
voterchristoph3
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #6227898/Trx 4c76690977b7485923821f0f1ee417dfc73b5c5e
View Raw JSON Data
{
  "trx_id": "4c76690977b7485923821f0f1ee417dfc73b5c5e",
  "block": 6227898,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-10-28T12:48:09",
  "op": [
    "vote",
    {
      "voter": "christoph3",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/09/11 19:45:39
votergnidan
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #4885423/Trx 7cd8c62e0c7d1fbeb8c70765fb946816c4b29e75
View Raw JSON Data
{
  "trx_id": "7cd8c62e0c7d1fbeb8c70765fb946816c4b29e75",
  "block": 4885423,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-09-11T19:45:39",
  "op": [
    "vote",
    {
      "voter": "gnidan",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/09/11 19:43:39
votergnidan
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #4885383/Trx e9b6811ef1044978a8241301f496fa834d9e422e
View Raw JSON Data
{
  "trx_id": "e9b6811ef1044978a8241301f496fa834d9e422e",
  "block": 4885383,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-09-11T19:43:39",
  "op": [
    "vote",
    {
      "voter": "gnidan",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/18 19:24:24
votermaraoz
authorfalkvinge
permlinka-simplified-taxless-state-a-proposal-part-one-of-three
weight10000 (100.00%)
Transaction InfoBlock #4197551/Trx bb0beb9dc0b4a4ee94624a7c23c313a828491d60
View Raw JSON Data
{
  "trx_id": "bb0beb9dc0b4a4ee94624a7c23c313a828491d60",
  "block": 4197551,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-18T19:24:24",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "falkvinge",
      "permlink": "a-simplified-taxless-state-a-proposal-part-one-of-three",
      "weight": 10000
    }
  ]
}
2016/08/12 17:00:06
votermaraoz
authordemibrener
permlinkon-tokens-and-crowdsales
weight10000 (100.00%)
Transaction InfoBlock #4022763/Trx 4f9384f336719a7ed287b1ecc3b7a46147eea089
View Raw JSON Data
{
  "trx_id": "4f9384f336719a7ed287b1ecc3b7a46147eea089",
  "block": 4022763,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-12T17:00:06",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "demibrener",
      "permlink": "on-tokens-and-crowdsales",
      "weight": 10000
    }
  ]
}
2016/08/11 13:39:15
voterozzy-vega
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3990129/Trx 5abc280d5dfe6aa928f8b2af913aa8942ec0687e
View Raw JSON Data
{
  "trx_id": "5abc280d5dfe6aa928f8b2af913aa8942ec0687e",
  "block": 3990129,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-11T13:39:15",
  "op": [
    "vote",
    {
      "voter": "ozzy-vega",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/08/09 19:22:33
voterfran2k
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3939538/Trx 82dd0320b88a88d9ad7a977208d96602a2936963
View Raw JSON Data
{
  "trx_id": "82dd0320b88a88d9ad7a977208d96602a2936963",
  "block": 3939538,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-09T19:22:33",
  "op": [
    "vote",
    {
      "voter": "fran2k",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/08/08 19:46:18
votermaraoz
authornikolai
permlinkdapp-a-day-1-erc20
weight10000 (100.00%)
Transaction InfoBlock #3911390/Trx 62d1d2219692da0f7df8e2aceadeb0d8436e4d3c
View Raw JSON Data
{
  "trx_id": "62d1d2219692da0f7df8e2aceadeb0d8436e4d3c",
  "block": 3911390,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-08T19:46:18",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "nikolai",
      "permlink": "dapp-a-day-1-erc20",
      "weight": 10000
    }
  ]
}
2016/08/07 18:54:00
voterabarmat
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3881725/Trx 00064c608025e5ef4c68b8eb2a5d37283322d3e7
View Raw JSON Data
{
  "trx_id": "00064c608025e5ef4c68b8eb2a5d37283322d3e7",
  "block": 3881725,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-07T18:54:00",
  "op": [
    "vote",
    {
      "voter": "abarmat",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/08/04 20:20:54
votermaraoz
authorjoelkatz
permlinkbitfinex-claiming-the-compromise-was-entirely-on-their-end
weight10000 (100.00%)
Transaction InfoBlock #3797441/Trx 3d1cebb7aab748b950cf45de0846dc72b47795dc
View Raw JSON Data
{
  "trx_id": "3d1cebb7aab748b950cf45de0846dc72b47795dc",
  "block": 3797441,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-04T20:20:54",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "joelkatz",
      "permlink": "bitfinex-claiming-the-compromise-was-entirely-on-their-end",
      "weight": 10000
    }
  ]
}
maraozreceived 0.400 SBD, 0.395 SP author reward for @maraoz / the-hitchhiker-s-guide-to-smart-contracts-in-ethereum
2016/08/02 09:46:30
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
sbd payout0.400 SBD
steem payout0.000 STEEM
vesting payout643.437953 VESTS
Transaction InfoBlock #3727644/Virtual Operation #17
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 3727644,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 17,
  "timestamp": "2016-08-02T09:46:30",
  "op": [
    "author_reward",
    {
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "sbd_payout": "0.400 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "643.437953 VESTS"
    }
  ]
}
maraozreceived 0.083 SBD interest payment
2016/08/02 09:46:30
ownermaraoz
interest0.083 SBD
Transaction InfoBlock #3727644/Virtual Operation #16
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 3727644,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 16,
  "timestamp": "2016-08-02T09:46:30",
  "op": [
    "interest",
    {
      "owner": "maraoz",
      "interest": "0.083 SBD"
    }
  ]
}
2016/08/01 23:06:00
voteropheliafu
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #3714868/Trx a0aff65077ed8a92a4baaca16cf3e50115cf3bda
View Raw JSON Data
{
  "trx_id": "a0aff65077ed8a92a4baaca16cf3e50115cf3bda",
  "block": 3714868,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T23:06:00",
  "op": [
    "vote",
    {
      "voter": "opheliafu",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/01 22:17:21
voterkillerstorm
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #3713895/Trx 554e4a3d358cd6e66cc37d00436aafe36bcf9506
View Raw JSON Data
{
  "trx_id": "554e4a3d358cd6e66cc37d00436aafe36bcf9506",
  "block": 3713895,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T22:17:21",
  "op": [
    "vote",
    {
      "voter": "killerstorm",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/01 22:12:33
voteregabragsiyrallih
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #3713799/Trx 459ef9ec5e384a7b2f6f62cade9c0b5bf45548b4
View Raw JSON Data
{
  "trx_id": "459ef9ec5e384a7b2f6f62cade9c0b5bf45548b4",
  "block": 3713799,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T22:12:33",
  "op": [
    "vote",
    {
      "voter": "egabragsiyrallih",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/01 21:43:09
votereeks
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #3713211/Trx 4c394082ef0850cdb969f8932210d43bf4bf5029
View Raw JSON Data
{
  "trx_id": "4c394082ef0850cdb969f8932210d43bf4bf5029",
  "block": 3713211,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:43:09",
  "op": [
    "vote",
    {
      "voter": "eeks",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/01 21:36:54
votermurh
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight1133 (11.33%)
Transaction InfoBlock #3713086/Trx 4024084bd0d5937c60702bea3eab4e35cd667874
View Raw JSON Data
{
  "trx_id": "4024084bd0d5937c60702bea3eab4e35cd667874",
  "block": 3713086,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:36:54",
  "op": [
    "vote",
    {
      "voter": "murh",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 1133
    }
  ]
}
2016/08/01 21:36:21
votercryptogee
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #3713075/Trx 851d4650909de815cf0434855437133789090074
View Raw JSON Data
{
  "trx_id": "851d4650909de815cf0434855437133789090074",
  "block": 3713075,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:36:21",
  "op": [
    "vote",
    {
      "voter": "cryptogee",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/01 21:26:15
voterjeison
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #3712874/Trx c66a67fdc546e1b7a9cf777aaf8679071348e567
View Raw JSON Data
{
  "trx_id": "c66a67fdc546e1b7a9cf777aaf8679071348e567",
  "block": 3712874,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:26:15",
  "op": [
    "vote",
    {
      "voter": "jeison",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/01 21:25:00
votercire81
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #3712849/Trx 16b0507cdffb7212ad2b7748951b1f06c3dd3f28
View Raw JSON Data
{
  "trx_id": "16b0507cdffb7212ad2b7748951b1f06c3dd3f28",
  "block": 3712849,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:25:00",
  "op": [
    "vote",
    {
      "voter": "cire81",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/01 21:24:57
votergunpower
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10 (0.10%)
Transaction InfoBlock #3712848/Trx 1c6a54f7ac3936a583d0432c359d406b25c0e02a
View Raw JSON Data
{
  "trx_id": "1c6a54f7ac3936a583d0432c359d406b25c0e02a",
  "block": 3712848,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:24:57",
  "op": [
    "vote",
    {
      "voter": "gunpower",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10
    }
  ]
}
2016/08/01 21:24:57
parent authormaraoz
parent permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
authorgunpower
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
title
bodyKeep up the great work @maraoz Upvoted
json metadata
Transaction InfoBlock #3712848/Trx 86ff4c87de085f1f3b9b1d93284e1ccee515c874
View Raw JSON Data
{
  "trx_id": "86ff4c87de085f1f3b9b1d93284e1ccee515c874",
  "block": 3712848,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:24:57",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "author": "gunpower",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "title": "",
      "body": "Keep up the great work @maraoz \n Upvoted ",
      "json_metadata": ""
    }
  ]
}
2016/08/01 21:24:18
parent author
parent permlinkethereum
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
titleThe Hitchhiker’s Guide to Smart Contracts in Ethereum
body@@ -1,60 +1,4 @@ -# The Hitchhiker%E2%80%99s Guide to Smart Contracts in Ethereum%0A !%5B%5D(
json metadata{"tags":["ethereum","programming","tutorial","guide","smart-contracts"],"links":["https://spring.io/understanding/javascript-promises","https://github.com/maraoz/solidity-experiments"]}
Transaction InfoBlock #3712835/Trx d37010923dddaeb6ec79949a5643bc4485f4ff2d
View Raw JSON Data
{
  "trx_id": "d37010923dddaeb6ec79949a5643bc4485f4ff2d",
  "block": 3712835,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:24:18",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "ethereum",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "title": "The Hitchhiker’s Guide to Smart Contracts in Ethereum",
      "body": "@@ -1,60 +1,4 @@\n-# The Hitchhiker%E2%80%99s Guide to Smart Contracts in Ethereum%0A\n !%5B%5D(\n",
      "json_metadata": "{\"tags\":[\"ethereum\",\"programming\",\"tutorial\",\"guide\",\"smart-contracts\"],\"links\":[\"https://spring.io/understanding/javascript-promises\",\"https://github.com/maraoz/solidity-experiments\"]}"
    }
  ]
}
2016/08/01 21:24:06
voteramboyst
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10 (0.10%)
Transaction InfoBlock #3712831/Trx 44b0ced4c38808f9377412df69475d6d64d628c3
View Raw JSON Data
{
  "trx_id": "44b0ced4c38808f9377412df69475d6d64d628c3",
  "block": 3712831,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:24:06",
  "op": [
    "vote",
    {
      "voter": "amboyst",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10
    }
  ]
}
2016/08/01 21:24:03
parent authormaraoz
parent permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
authoramboyst
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
title
bodyNice @maraoz Shot you an Upvote :)
json metadata
Transaction InfoBlock #3712830/Trx e37a5c6b35325385f7de869575bb652bf57e8e2c
View Raw JSON Data
{
  "trx_id": "e37a5c6b35325385f7de869575bb652bf57e8e2c",
  "block": 3712830,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:24:03",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "author": "amboyst",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "title": "",
      "body": "Nice @maraoz \n Shot you an Upvote :)",
      "json_metadata": ""
    }
  ]
}
2016/08/01 21:24:00
parent authormaraoz
parent permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
authorisaac.asimov
permlinkre-the-hitchhiker-s-guide-to-smart-contracts-in-ethereum-20160801t212400
titleFlesch Kincaid Grade Level
bodyHi! This post has a <a href="https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests">Flesch-Kincaid</a> grade level of 11.1 and reading ease of 52%. This puts the writing level on par with Michael Crichton and Mitt Romney.
json metadata
Transaction InfoBlock #3712829/Trx b0919d5ea9146a2549a01c36059c7f1d9dfa7015
View Raw JSON Data
{
  "trx_id": "b0919d5ea9146a2549a01c36059c7f1d9dfa7015",
  "block": 3712829,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:24:00",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "author": "isaac.asimov",
      "permlink": "re-the-hitchhiker-s-guide-to-smart-contracts-in-ethereum-20160801t212400",
      "title": "Flesch Kincaid Grade Level",
      "body": "Hi! This post has a <a href=\"https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests\">Flesch-Kincaid</a> grade level of 11.1 and reading ease of 52%. This puts the writing level on par with Michael Crichton and Mitt Romney.",
      "json_metadata": ""
    }
  ]
}
2016/08/01 21:23:24
votermaraoz
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
weight10000 (100.00%)
Transaction InfoBlock #3712818/Trx ac38903f26004e70b9b49b3e27295b7a36c0a691
View Raw JSON Data
{
  "trx_id": "ac38903f26004e70b9b49b3e27295b7a36c0a691",
  "block": 3712818,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:23:24",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "weight": 10000
    }
  ]
}
2016/08/01 21:23:24
parent author
parent permlinkethereum
authormaraoz
permlinkthe-hitchhiker-s-guide-to-smart-contracts-in-ethereum
titleThe Hitchhiker’s Guide to Smart Contracts in Ethereum
body# The Hitchhiker’s Guide to Smart Contracts in Ethereum ![](http://i68.tinypic.com/2lxiik9.jpg) Originally [posted in the BitCorps Blog](https://medium.com/bitcorps-blog/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05#.g6t7jle33). I’ve been [working with smart contracts for 4 years](https://medium.com/@maraoz/smart-contracts-and-bitcoin-a5d61011d9b1#.4rfpv9mn1), mainly in the Bitcoin blockchain. Some projects I participated in are [Proof of Existence](https://proofofexistence.com/), [bitcore](https://bitcore.io/), and [Streamium](https://streamium.io/). In the past months, I’ve been exploring and working with the [Ethereum](https://www.ethereum.org/) platform. I’ve decided to compile a short guide to ease the way of future programmers learning Ethereum smart contract development. I’ve divided the guide in two sections: how to get started building smart contracts in Ethereum, and a quick note on smart contract security. # Getting started with Smart Contracts on Ethereum ## 0. Basic Concepts This guide assumes you have a basic level of technical understanding on how cryptocurrencies and blockchains work. If you don’t, I recommend skimming over [Andreas Antonopoulos’ Mastering Bitcoin book](https://github.com/bitcoinbook/bitcoinbook), Consensys’ [“Just Enough Bitcoin for Ethereum” guide](https://medium.com/@ConsenSys/time-sure-does-fly-ed4518792679#.jkvz5ojae), or at least [watching this short video by Scott Driscoll](http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html). To continue ahead you should know what a public and private key are, why a blockchain needs miners, how decentralized consensus is reached, what a transaction is, and the concepts of transaction scripting and smart contracts. Two other important and related concepts you’ll need to understand before working with Ethereum are the Ethereum Virtual Machine and gas. Ethereum was designed as a smart contract platform. Its origin is actually linked to a critique made by Vitalik Buterin on bitcoin as a very limited smart contract platform. The [Ethereum Virtual Machine](http://gavwood.com/Paper.pdf) (EVM) is where smart contracts run in Ethereum. It provides a more expressive and complete language than bitcoin for scripting. In fact, it is a [Turing Complete](https://github.com/ethereum/wiki/wiki/White-Paper#computation-and-turing-completeness) programming language. A good metaphor is that the EVM is a distributed global computer where all smart contracts are executed. Given that smart contracts run in the EVM, there must be a mechanism to limit the resources used by each contract. Every single operation that is executed inside the EVM is actually simultaneously executed by every node in the network. This is why gas exists. An Ethereum transaction contract code can trigger data reads and writes, do expensive computations like using cryptographic primitives, make calls (send messages) to other contracts, etc. Each of these operations have a cost measured in gas, and each gas unit consumed by a transaction must be paid for in Ether, based on a gas/Ether price which changes dynamically. This price is deducted from the Ethereum account sending the transaction. Transactions also have a gas limit parameter that is an upper bound on how much gas the transaction can consume, and is used as a safe-guard against programming errors that could deplete an account’s funds. [You can read more about gas here](https://ethereum.gitbooks.io/frontier-guide/content/costs.html). ## 1. Setting up your environment So, you know the basics, let’s set everything up to code! To start developing Ethereum apps (or DApps, for decentralized applications, as many people like to call them), you’ll need a client to connect to the network. It will act as your window to the distributed network, and provide a view of the blockchain, where all the EVM state is represented. There are various compatible clients for the protocol, the most popular being geth, a Go language implementation. However, it’s not the most developer-friendly. The best option I’ve found is the [testrpc](https://github.com/ethereumjs/testrpc) node (yes, the name sucks). Trust me, it will save you a lot of time. Install it and run it: ``` $ sudo npm install -g ethereumjs-testrpc $ testrpc ``` You should run `testrpc` in a new terminal and leave it running while you develop. Each time you run testrpc, it will generate 10 new addresses with simulated test funds for you to use. This is not real money and you’re safe to try anything with no risk of losing funds. The most popular language for writing smart contracts in Ethereum is [Solidity](https://solidity.readthedocs.io/en/latest/), so we’ll be using that. We’re also using [the Truffle development framework](https://github.com/ConsenSys/truffle), which helps with smart contract creation, compiling, deployment and testing. Let’s start: ``` # First, let's install truffle $ sudo npm install -g truffle # let's setup our project $ mkdir solidity-experiments $ cd solidity-experiments/ $ truffle init ``` Truffle will create all the files for an example project, including contracts for MetaCoin, a sample token contract. You should be able to compile the example contracts by running `truffle compile`. Then, to deploy the contracts to the simulated network using the testrpc node we have running, you need to run `truffle migrate`: ``` $ truffle compile Compiling ConvertLib.sol... Compiling MetaCoin.sol... Compiling Migrations.sol... Writing artifacts to ./build/contracts $ truffle migrate Running migration: 1_initial_migration.js Deploying Migrations... Migrations: 0x78102b69114dbb846200a6a55c2fce8b16f61a5d Saving successful migration to network... Saving artifacts... Running migration: 2_deploy_contracts.js Deploying ConvertLib... ConvertLib: 0xaa708272521f972b9ceced7e4b0dae92c77a49ad Linking ConvertLib to MetaCoin Deploying MetaCoin... MetaCoin: 0xdd14d0691ca607d9a38f303501c5b0cf6c843fa1 Saving successful migration to network... Saving artifacts... ``` > *Note to Mac OS X users*: Truffle is sometimes confused by .DS_Store files. If you get an error mentioning one of those files, just delete it. We just deployed the sample contracts to our test node. Wohoo! That was easy, right? Time to create our own contract now! ## 2. Writing your first Ethereum smart contract In this guide we’ll be writing a simple [Proof of Existence](https://proofofexistence.com/) smart contract. The idea is to create a digital notary that stores hashes of documents as proofs of their existence. Use `truffle create:contract` to get started: ``` $ truffle create:contract ProofOfExistence1 ``` Now open `contracts/ProofOfExistence1.sol` in your favorite text editor (I use vim with [Solidity syntax highlighting](https://github.com/tomlion/vim-solidity)), and paste this initial version of the code: ``` // Proof of Existence contract, version 1 contract ProofOfExistence1 { // state bytes32 public proof; // calculate and store the proof for a document // *transactional function* function notarize(string document) { proof = calculateProof(document); } // helper function to get a document's sha256 // *read-only function* function calculateProof(string document) constant returns (bytes32) { return sha256(document); } } ``` We’ll start with something simple but incorrect and move towards a better solution. This is a definition of a Solidity contract, which is like a class in other programming languages. Contracts have state and functions. It is important to distinguish two kinds of functions that can appear in a contract: - Read-only (constant) functions: functions that don’t perform any state changes. They only read state, perform computations, and return values. As these functions can be resolved locally by each node, they cost no gas. Marked with the keyword `constant`. - Transactional functions: functions that perform a state change in the contract or move funds. As these changes need to be reflected in the blockchain, transactional function execution requires sending a transaction to the network and spending gas. Our contract above has one of each kind, marked in the documentation. We’ll see how the kind of function we’re using with modifies how we interact with the smart contract in the next section. This simple version only stores one proof at a time, using the data type bytes32, or 32 bytes, which is the size of a sha256 hash. The transactional function `notarize` allows one to store the hash of a document in our smart contract’s state variable `proof`. Said variable is public, and is the only way a user of our contract has to verify if a document has been notarized. We’ll do that ourselves shortly, but first… Let’s deploy ProofOfExistence1 to the network! This time, you’ll have to edit the migration file (migrations/2_deploy_contracts.js) to make Truffle deploy our new contract. Replace the contents with the following: ``` /* * migrations/2_deploy_contracts.js: */ module.exports = function(deployer) { deployer.deploy(ConvertLib); deployer.autolink(); deployer.deploy(MetaCoin); // add this line deployer.deploy(ProofOfExistence1); }; ``` You can also optionally remove the lines about ConvertLib and MetaCoin, which we’ll no longer be using. To run this migration again, you’ll need to use the reset flag, to make sure it’s run again. ``` truffle migrate --reset ``` More on how Truffle migrations work [can be found here](https://truffle.readthedocs.io/en/latest/getting_started/migrations/). ## 3. Interacting with your smart contract Now that our contract is deployed, let’s play with it! We can send messages to it via function calls and read its public state. We’ll use the Truffle console for that: ``` $ truffle console // get the deployed version of our contract truffle(default)> var poe = ProofOfExistence1.deployed() // and print its address truffle(default)> console.log(poe.address) 0x3d3bce79cccc331e9e095e8985def13651a86004 // let's register our first "document" truffle(default)> poe.notarize('An amazing idea') Promise { <pending> } // let's now get the proof for that document truffle(default)> poe.calculateProof('An amazing idea').then(console.log) Promise { <pending> } 0xa3287ff8d1abde95498962c4e1dd2f50a9f75bd8810bd591a64a387b93580ee7 // To check if the contract's state was correctly changed: truffle(default)> poe.proof().then(console.log) 0xa3287ff8d1abde95498962c4e1dd2f50a9f75bd8810bd591a64a387b93580ee7 // The hash matches the one we previously calculated ``` Note that all function calls return a [Promise](https://spring.io/understanding/javascript-promises), and we use `.then(console.log)` to print the result once the Promise resolves if we want to check it. First thing we do is obtain a representation of our deployed contract and store it in a variable called `poe`. We then call the transactional function `notarize`, which involves a state change. When we call a transactional function, we get a Promise that resolves to a transaction id, not what the actual function returns. Remember that to change the EVM state we need to spend gas and send a transaction to the network. That’s why we get a transaction id as the result of the Promise, from the transaction that did this state change. In this case, we are not interested in the transaction id, so we just discard the Promise. When writing a real app, we’ll want to save it to check the resulting transaction and catch errors. Next, we call the read-only (constant) function `calculateProof`. Remember to mark your read-only functions with the keyword `constant`, or else Truffle will try to craft a transaction to execute the function. This is a way to tell Truffle that we’re not interacting with the blockchain but just reading from it. By using this read-only function, we obtain the sha256 of the ‘An amazing idea’ “document”. We now need to contrast this with the state of our smart contract. To check if the state changed correctly, we need to read the `proof` public state variable. To get the value of a public state variable, we can call a function of the same name, which returns a Promise. In our case, the output hash is the same, so everything worked as expected :) For more info on how to interact with contracts, read [this section of the Truffle documentation](https://truffle.readthedocs.io/en/latest/getting_started/contracts/). As you can see from the snippet above, our first version of the Proof of Existence smart contract seems to be working! Good work! It’s only good for registering one document at a time, though. Let’s create a better version. ## 4. Iterating the contract code Let’s change the contract to support multiple document proofs. Copy the original file with the name contracts/ProofOfExistence2.sol and apply these changes. The main changes are: we change the proof variable into a bytes32 array and call it proofs, we make it private, and we add a function to check if a document has already been notarized by iterating that array. ``` // Proof of Existence contract, version 2 contract ProofOfExistence2 { // state bytes32[] private proofs; // store a proof of existence in the contract state // *transactional function* function storeProof(bytes32 proof) { proofs.push(proof); } // calculate and store the proof for a document // *transactional function* function notarize(string document) { var proof = calculateProof(document); storeProof(proof); } // helper function to get a document's sha256 // *read-only function* function calculateProof(string document) constant returns (bytes32) { return sha256(document); } // check if a document has been notarized // *read-only function* function checkDocument(string document) constant returns (bool) { var proof = calculateProof(document); return hasProof(proof); } // returns true if proof is stored // *read-only function* function hasProof(bytes32 proof) constant returns (bool) { for (var i = 0; i < proofs.length; i++) { if (proofs[i] == proof) { return true; } } return false; } } ``` Let’s interact with the new functions: (remember to update migrations/2_deploy_contracts.js to include the new contract and run `truffle migrate --reset`) ``` // deploy contracts truffle(default)> migrate --reset // Get the new version of the contract truffle(default)> var poe = ProofOfExistence2.deployed() // let's check for some new document, and it shouldn't be there. truffle(default)> poe.checkDocument('hello').then(console.log) Promise { <pending> } false // let's now add that document to the proof store truffle(default)> poe.notarize('hello') Promise { <pending> } // let's now check again if the document has been notarized! truffle(default)> poe.checkDocument('hello').then(console.log) Promise { <pending> } true // success! // we can also store other documents and they are recorded too truffle(default)> poe.notarize('some other document'); truffle(default)> poe.checkDocument('some other document').then(console.log) Promise { <pending> } true ``` This version is better than the first, but still has some problems. Note that every time we want to check if a document was notarized, we need to iterate through all existing proofs. A better structure to store proofs is a map. Luckily, Solidity supports maps, and calls them mappings. Another thing we’ll improve in this version is removing all that extra comments marking read-only or transactional functions. I think you get it by now :) Here’s the final version, which should be pretty easy to understand because you followed along previous versions: ``` // Proof of Existence contract, version 3 contract ProofOfExistence3 { mapping (bytes32 => bool) private proofs; // store a proof of existence in the contract state function storeProof(bytes32 proof) { proofs[proof] = true; } // calculate and store the proof for a document function notarize(string document) { var proof = calculateProof(document); storeProof(proof); } // helper function to get a document's sha256 function calculateProof(string document) constant returns (bytes32) { return sha256(document); } // check if a document has been notarized function checkDocument(string document) constant returns (bool) { var proof = calculateProof(document); return hasProof(proof); } // returns true if proof is stored function hasProof(bytes32 proof) returns constant (bool) { return proofs[proof]; } } ``` That looks good enough. And it works exactly as the 2nd version. To try it out, remember to update the migration file and run `truffle migrate --reset` again. All the code in this tutorial can be found [in this GitHub repo](https://github.com/maraoz/solidity-experiments). ## 5. Deploying to the real testnet network Once you’ve tested your contract extensively using testrpc in the simulated network, you’re ready to try it in the real network! To do that, we need a real testnet/livenet Ethereum client. [Follow these instructions to install geth](https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum). During development, you should run nodes in testnet mode, so that you can test everything out without risking real money. Testnet mode (also known as [Morden](https://github.com/ethereum/wiki/wiki/Morden ) in Ethereum) is basically identical to the real Ethereum, but the Ether token there has no monetary value. Don’t be lazy and remember to always develop in testnet mode, you will regret it if you lose real Ether due to a programming error. Run geth in testnet mode, with RPC server enabled: ``` geth --testnet --rpc console 2>> geth.log ``` This will open a console where you can type in basic commands to control your node/client. Your node will begin downloading the testnet blockchain, and you can check progress by checking eth.blockNumber. While the blockchain is downloading, you can still run commands. For example, let’s create an account: (remember the password!) ``` > personal.newAccount() Passphrase: Repeat passphrase: "0xa88614166227d83c93f4c50be37150b9500d51fc" ``` Let’s send some coins there and check the balance. [You can get free testnet Ether here](https://zerogox.com/ethereum/wei_faucet). Just copy-paste the address you just generated and this faucet will send you 1 testnet Ether. To check you balance, run: ``` > eth.getBalance(eth.accounts[0]) 0 ``` It will show no balance because your node hasn’t synced with the rest of the network yet. While you wait for that, check your balance [in a testnet block explorer](https://testnet.etherscan.io/). There, you can also see the current testnet highest block number (#1355293 at the time of writing), which you can use in combination with eth.blockNumber to know when your node has synced completely. Once your node has synced, you’re ready to deploy the contracts to the testnet using Truffle. First, unlock your main geth account, so that Truffle can use it. And be sure that it holds some balance, or you won’t be able to push a new contract to the network. ``` > personal.unlockAccount(eth.accounts[0], "mypassword", 24*3600) true > eth.getBalance(eth.accounts[0]) 1000000000000000000 ``` Ready to go! If some of these two are not working for you, check the steps above and make sure you’ve completed them correctly. Now run: ``` $ truffle migrate --reset ``` Note that this time, it will take longer to complete, as we’re connecting to the actual network and not one simulated by testrpc. Once it completes, you can interact with the contract using the same approach as before. The testnet-deployed version of ProofOfExistence3 can be found at the address [0xcaf216d1975f75ab3fed520e1e3325dac3e79e05](https://testnet.etherscan.io/address/0xcaf216d1975f75ab3fed520e1e3325dac3e79e05). I’ll leave the details on how to deploy to the live network to the reader. You should only do this once you’ve extensively tested your contracts in simulated and test networks. [Remember any programming error can result in monetary loss in the livenet](https://blog.ethereum.org/2016/06/17/critical-update-re-dao-vulnerability/)! # Smart Contract security in Ethereum is hard > “Smart contracts are pretty difficult to get right.” [Emin Gün Sirer](http://hackingdistributed.com/2016/07/13/reentrancy-woes/) Given that by nature, smart contracts are computer code that define how money moves, I couldn’t end this guide without even a small note on security. I’ll be talking about smart contract security in much more depth at future posts, but here are some quick notes to get you started. Some problems you should be aware of (and avoid): - [Reentrancy](http://hackingdistributed.com/2016/07/13/reentrancy-woes/): Do not perform external calls in contracts. If you do, ensure that they are the very last thing you do. - [Send can fail](http://vessenes.com/ethereum-griefing-wallets-send-w-throw-considered-harmful/): When sending money, your code should always be prepared for the send function to fail. - [Loops can trigger gas limit](http://solidity.readthedocs.io/en/latest/security-considerations.html#gas-limit-and-loops): Be careful when looping over state variables, which can grow in size and make gas consumption hit the limits. - [Call stack depth limit](https://ethereum.stackexchange.com/questions/6260/solidity-callstack-attack): Don’t use recursion, and be aware that any call can fail if stack depth limit is reached. - [Timestamp dependency](https://github.com/ConsenSys/smart-contract-best-practices#timestamp-dependence): Do not use timestamps in critical parts of the code, because miners can manipulate them. These are provided just as examples of unexpected behaviors that can lead for theft or destruction of funds in your smart contract. The morale is: if you’re writing smart contracts, you’re writing code that handles real money. You should be very careful! Write tests, do code reviews, and audit your code. The best way to avoid obvious security problems is to have a solid understanding of the language. I recommend you [read the Solidity documentation](https://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html) if you have the time. We still need better tools for acceptable smart contract security. That’s it! I hope you enjoyed reading this guide and learning your first steps in programming smart contracts in Ethereum! This is still a very new industry and there’s lot of room for new apps and tools. Feel free to contact me with ideas or prototypes. Follow me on [Steemit](https://steemit.com/@maraoz), and [Twitter](https://twitter.com/maraoz) to keep updated on our smart contract development publications.
json metadata{"tags":["ethereum","programming","tutorial","guide","smart-contracts"],"links":["https://spring.io/understanding/javascript-promises","https://github.com/maraoz/solidity-experiments"]}
Transaction InfoBlock #3712818/Trx ac38903f26004e70b9b49b3e27295b7a36c0a691
View Raw JSON Data
{
  "trx_id": "ac38903f26004e70b9b49b3e27295b7a36c0a691",
  "block": 3712818,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T21:23:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "ethereum",
      "author": "maraoz",
      "permlink": "the-hitchhiker-s-guide-to-smart-contracts-in-ethereum",
      "title": "The Hitchhiker’s Guide to Smart Contracts in Ethereum",
      "body": "# The Hitchhiker’s Guide to Smart Contracts in Ethereum\n![](http://i68.tinypic.com/2lxiik9.jpg)\n\nOriginally [posted in the BitCorps Blog](https://medium.com/bitcorps-blog/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05#.g6t7jle33).\n\nI’ve been [working with smart contracts for 4 years](https://medium.com/@maraoz/smart-contracts-and-bitcoin-a5d61011d9b1#.4rfpv9mn1), mainly in the Bitcoin blockchain. Some projects I participated in are [Proof of Existence](https://proofofexistence.com/), [bitcore](https://bitcore.io/), and [Streamium](https://streamium.io/). In the past months, I’ve been exploring and working with the [Ethereum](https://www.ethereum.org/) platform.\n\nI’ve decided to compile a short guide to ease the way of future programmers learning Ethereum smart contract development. I’ve divided the guide in two sections: how to get started building smart contracts in Ethereum, and a quick note on smart contract security.\n\n# Getting started with Smart Contracts on Ethereum\n## 0. Basic Concepts\nThis guide assumes you have a basic level of technical understanding on how cryptocurrencies and blockchains work. If you don’t, I recommend skimming over [Andreas Antonopoulos’ Mastering Bitcoin book](https://github.com/bitcoinbook/bitcoinbook), Consensys’ [“Just Enough Bitcoin for Ethereum” guide](https://medium.com/@ConsenSys/time-sure-does-fly-ed4518792679#.jkvz5ojae), or at least [watching this short video by Scott Driscoll](http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html). To continue ahead you should know what a public and private key are, why a blockchain needs miners, how decentralized consensus is reached, what a transaction is, and the concepts of transaction scripting and smart contracts.\n\nTwo other important and related concepts you’ll need to understand before working with Ethereum are the Ethereum Virtual Machine and gas.\n\nEthereum was designed as a smart contract platform. Its origin is actually linked to a critique made by Vitalik Buterin on bitcoin as a very limited smart contract platform. The [Ethereum Virtual Machine](http://gavwood.com/Paper.pdf) (EVM) is where smart contracts run in Ethereum. It provides a more expressive and complete language than bitcoin for scripting. In fact, it is a [Turing Complete](https://github.com/ethereum/wiki/wiki/White-Paper#computation-and-turing-completeness) programming language. A good metaphor is that the EVM is a distributed global computer where all smart contracts are executed.\n\nGiven that smart contracts run in the EVM, there must be a mechanism to limit the resources used by each contract. Every single operation that is executed inside the EVM is actually simultaneously executed by every node in the network. This is why gas exists. An Ethereum transaction contract code can trigger data reads and writes, do expensive computations like using cryptographic primitives, make calls (send messages) to other contracts, etc. Each of these operations have a cost measured in gas, and each gas unit consumed by a transaction must be paid for in Ether, based on a gas/Ether price which changes dynamically. This price is deducted from the Ethereum account sending the transaction. Transactions also have a gas limit parameter that is an upper bound on how much gas the transaction can consume, and is used as a safe-guard against programming errors that could deplete an account’s funds. [You can read more about gas here](https://ethereum.gitbooks.io/frontier-guide/content/costs.html).\n\n## 1. Setting up your environment\n\nSo, you know the basics, let’s set everything up to code! To start developing Ethereum apps (or DApps, for decentralized applications, as many people like to call them), you’ll need a client to connect to the network. It will act as your window to the distributed network, and provide a view of the blockchain, where all the EVM state is represented.\n\nThere are various compatible clients for the protocol, the most popular being geth, a Go language implementation. However, it’s not the most developer-friendly. The best option I’ve found is the [testrpc](https://github.com/ethereumjs/testrpc) node (yes, the name sucks). Trust me, it will save you a lot of time. Install it and run it:\n\n```\n$ sudo npm install -g ethereumjs-testrpc\n$ testrpc\n```\n\nYou should run `testrpc` in a new terminal and leave it running while you develop. Each time you run testrpc, it will generate 10 new addresses with simulated test funds for you to use. This is not real money and you’re safe to try anything with no risk of losing funds.\n\nThe most popular language for writing smart contracts in Ethereum is [Solidity](https://solidity.readthedocs.io/en/latest/), so we’ll be using that. We’re also using [the Truffle development framework](https://github.com/ConsenSys/truffle), which helps with smart contract creation, compiling, deployment and testing. Let’s start:\n```\n# First, let's install truffle\n$ sudo npm install -g truffle\n# let's setup our project\n$ mkdir solidity-experiments\n$ cd solidity-experiments/\n$ truffle init \n```\n\nTruffle will create all the files for an example project, including contracts for MetaCoin, a sample token contract. You should be able to compile the example contracts by running `truffle compile`. Then, to deploy the contracts to the simulated network using the testrpc node we have running, you need to run `truffle migrate`:\n\n```\n$ truffle compile\nCompiling ConvertLib.sol...\nCompiling MetaCoin.sol...\nCompiling Migrations.sol...\nWriting artifacts to ./build/contracts\n$ truffle migrate\nRunning migration: 1_initial_migration.js\n  Deploying Migrations...\n  Migrations: 0x78102b69114dbb846200a6a55c2fce8b16f61a5d\nSaving successful migration to network...\nSaving artifacts...\nRunning migration: 2_deploy_contracts.js\n  Deploying ConvertLib...\n  ConvertLib: 0xaa708272521f972b9ceced7e4b0dae92c77a49ad\n  Linking ConvertLib to MetaCoin\n  Deploying MetaCoin...\n  MetaCoin: 0xdd14d0691ca607d9a38f303501c5b0cf6c843fa1\nSaving successful migration to network...\nSaving artifacts...\n```\n\n> *Note to Mac OS X users*: Truffle is sometimes confused by .DS_Store files. If you get an error mentioning one of those files, just delete it.\n\nWe just deployed the sample contracts to our test node. Wohoo! That was easy, right? Time to create our own contract now!\n\n## 2. Writing your first Ethereum smart contract\n\nIn this guide we’ll be writing a simple [Proof of Existence](https://proofofexistence.com/) smart contract. The idea is to create a digital notary that stores hashes of documents as proofs of their existence. Use `truffle create:contract` to get started:\n\n```\n$ truffle create:contract ProofOfExistence1\n```\nNow open `contracts/ProofOfExistence1.sol` in your favorite text editor (I use vim with [Solidity syntax highlighting](https://github.com/tomlion/vim-solidity)), and paste this initial version of the code:\n\n```\n// Proof of Existence contract, version 1\ncontract ProofOfExistence1 {\n  // state\n  bytes32 public proof;\n  // calculate and store the proof for a document\n  // *transactional function*\n  function notarize(string document) {\n    proof = calculateProof(document);\n  }\n  // helper function to get a document's sha256\n  // *read-only function*\n  function calculateProof(string document) constant returns (bytes32) {\n    return sha256(document);\n  }\n}\n```\n\nWe’ll start with something simple but incorrect and move towards a better solution. This is a definition of a Solidity contract, which is like a class in other programming languages. Contracts have state and functions. It is important to distinguish two kinds of functions that can appear in a contract:\n\n- Read-only (constant) functions: functions that don’t perform any state changes. They only read state, perform computations, and return values. As these functions can be resolved locally by each node, they cost no gas. Marked with the keyword `constant`.\n\n- Transactional functions: functions that perform a state change in the contract or move funds. As these changes need to be reflected in the blockchain, transactional function execution requires sending a transaction to the network and spending gas.\n\nOur contract above has one of each kind, marked in the documentation. We’ll see how the kind of function we’re using with modifies how we interact with the smart contract in the next section.\n\nThis simple version only stores one proof at a time, using the data type bytes32, or 32 bytes, which is the size of a sha256 hash. The transactional function `notarize` allows one to store the hash of a document in our smart contract’s state variable `proof`. Said variable is public, and is the only way a user of our contract has to verify if a document has been notarized. We’ll do that ourselves shortly, but first…\n\nLet’s deploy ProofOfExistence1 to the network! This time, you’ll have to edit the migration file (migrations/2_deploy_contracts.js) to make Truffle deploy our new contract. Replace the contents with the following:\n\n```\n/*\n * migrations/2_deploy_contracts.js:\n */\nmodule.exports = function(deployer) {\n  deployer.deploy(ConvertLib);\n  deployer.autolink();\n  deployer.deploy(MetaCoin);\n  // add this line\n  deployer.deploy(ProofOfExistence1);\n};\n```\n\nYou can also optionally remove the lines about ConvertLib and MetaCoin, which we’ll no longer be using. To run this migration again, you’ll need to use the reset flag, to make sure it’s run again.\n\n```\ntruffle migrate --reset\n```\n\nMore on how Truffle migrations work [can be found here](https://truffle.readthedocs.io/en/latest/getting_started/migrations/).\n\n## 3. Interacting with your smart contract\nNow that our contract is deployed, let’s play with it! We can send messages to it via function calls and read its public state. We’ll use the Truffle console for that:\n\n```\n$ truffle console\n// get the deployed version of our contract\ntruffle(default)> var poe = ProofOfExistence1.deployed()\n// and print its address \ntruffle(default)> console.log(poe.address)\n0x3d3bce79cccc331e9e095e8985def13651a86004\n// let's register our first \"document\"\ntruffle(default)> poe.notarize('An amazing idea')\nPromise { <pending> }\n// let's now get the proof for that document\ntruffle(default)> poe.calculateProof('An amazing idea').then(console.log)\nPromise { <pending> }\n0xa3287ff8d1abde95498962c4e1dd2f50a9f75bd8810bd591a64a387b93580ee7\n// To check if the contract's state was correctly changed:\ntruffle(default)> poe.proof().then(console.log)\n0xa3287ff8d1abde95498962c4e1dd2f50a9f75bd8810bd591a64a387b93580ee7\n// The hash matches the one we previously calculated\n```\n\n\nNote that all function calls return a [Promise](https://spring.io/understanding/javascript-promises), and we use `.then(console.log)` to print the result once the Promise resolves if we want to check it.\n\nFirst thing we do is obtain a representation of our deployed contract and store it in a variable called `poe`.\nWe then call the transactional function `notarize`, which involves a state change. When we call a transactional function, we get a Promise that resolves to a transaction id, not what the actual function returns. Remember that to change the EVM state we need to spend gas and send a transaction to the network. That’s why we get a transaction id as the result of the Promise, from the transaction that did this state change. In this case, we are not interested in the transaction id, so we just discard the Promise. When writing a real app, we’ll want to save it to check the resulting transaction and catch errors.\n\nNext, we call the read-only (constant) function `calculateProof`. Remember to mark your read-only functions with the keyword `constant`, or else Truffle will try to craft a transaction to execute the function. This is a way to tell Truffle that we’re not interacting with the blockchain but just reading from it. By using this read-only function, we obtain the sha256 of the ‘An amazing idea’ “document”.\n\nWe now need to contrast this with the state of our smart contract. To check if the state changed correctly, we need to read the `proof` public state variable. To get the value of a public state variable, we can call a function of the same name, which returns a Promise. In our case, the output hash is the same, so everything worked as expected :)\nFor more info on how to interact with contracts, read [this section of the Truffle documentation](https://truffle.readthedocs.io/en/latest/getting_started/contracts/).\n\nAs you can see from the snippet above, our first version of the Proof of Existence smart contract seems to be working! Good work! It’s only good for registering one document at a time, though. Let’s create a better version.\n\n## 4. Iterating the contract code\nLet’s change the contract to support multiple document proofs. Copy the original file with the name contracts/ProofOfExistence2.sol and apply these changes. The main changes are: we change the proof variable into a bytes32 array and call it proofs, we make it private, and we add a function to check if a document has already been notarized by iterating that array.\n\n```\n// Proof of Existence contract, version 2\ncontract ProofOfExistence2 {\n  // state\n  bytes32[] private proofs;\n  // store a proof of existence in the contract state\n  // *transactional function*\n  function storeProof(bytes32 proof) {\n    proofs.push(proof);\n  }\n  // calculate and store the proof for a document\n  // *transactional function*\n  function notarize(string document) {\n    var proof = calculateProof(document);\n    storeProof(proof);\n  }\n  // helper function to get a document's sha256\n  // *read-only function*\n  function calculateProof(string document) constant returns (bytes32) {\n    return sha256(document);\n  }\n  // check if a document has been notarized\n  // *read-only function*\n  function checkDocument(string document) constant returns (bool) {\n    var proof = calculateProof(document);\n    return hasProof(proof);\n  }\n  // returns true if proof is stored\n  // *read-only function*\n  function hasProof(bytes32 proof) constant returns (bool) {\n    for (var i = 0; i < proofs.length; i++) {\n      if (proofs[i] == proof) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n```\n\nLet’s interact with the new functions: (remember to update migrations/2_deploy_contracts.js to include the new contract and run `truffle migrate --reset`)\n\n```\n// deploy contracts\ntruffle(default)>  migrate --reset\n// Get the new version of the contract\ntruffle(default)> var poe = ProofOfExistence2.deployed()\n// let's check for some new document, and it shouldn't be there.\ntruffle(default)> poe.checkDocument('hello').then(console.log)\nPromise { <pending> }\nfalse\n// let's now add that document to the proof store\ntruffle(default)> poe.notarize('hello')\nPromise { <pending> }\n// let's now check again if the document has been notarized!\ntruffle(default)> poe.checkDocument('hello').then(console.log)\nPromise { <pending> }\ntrue\n// success!\n// we can also store other documents and they are recorded too\ntruffle(default)> poe.notarize('some other document');\ntruffle(default)> poe.checkDocument('some other document').then(console.log)\nPromise { <pending> }\ntrue\n```\n\nThis version is better than the first, but still has some problems. Note that every time we want to check if a document was notarized, we need to iterate through all existing proofs. A better structure to store proofs is a map. Luckily, Solidity supports maps, and calls them mappings. Another thing we’ll improve in this version is removing all that extra comments marking read-only or transactional functions. I think you get it by now :)\n\nHere’s the final version, which should be pretty easy to understand because you followed along previous versions:\n\n```\n// Proof of Existence contract, version 3\ncontract ProofOfExistence3 {\n  mapping (bytes32 => bool) private proofs;\n  // store a proof of existence in the contract state\n  function storeProof(bytes32 proof) {\n    proofs[proof] = true;\n  }\n  // calculate and store the proof for a document\n  function notarize(string document) {\n    var proof = calculateProof(document);\n    storeProof(proof);\n  }\n  // helper function to get a document's sha256\n  function calculateProof(string document) constant returns (bytes32) {\n    return sha256(document);\n  }\n  // check if a document has been notarized\n  function checkDocument(string document) constant returns (bool) {\n    var proof = calculateProof(document);\n    return hasProof(proof);\n  }\n  // returns true if proof is stored\n  function hasProof(bytes32 proof) returns constant (bool) {\n    return proofs[proof];\n  }\n}\n```\n\nThat looks good enough. And it works exactly as the 2nd version. To try it out, remember to update the migration file and run `truffle migrate --reset` again. All the code in this tutorial can be found [in this GitHub repo](https://github.com/maraoz/solidity-experiments).\n\n## 5. Deploying to the real testnet network\n\nOnce you’ve tested your contract extensively using testrpc in the simulated network, you’re ready to try it in the real network! To do that, we need a real testnet/livenet Ethereum client. [Follow these instructions to install geth](https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum).\n\nDuring development, you should run nodes in testnet mode, so that you can test everything out without risking real money. Testnet mode (also known as [Morden](https://github.com/ethereum/wiki/wiki/Morden ) in Ethereum) is basically identical to the real Ethereum, but the Ether token there has no monetary value. Don’t be lazy and remember to always develop in testnet mode, you will regret it if you lose real Ether due to a programming error.\n\nRun geth in testnet mode, with RPC server enabled:\n```\ngeth --testnet --rpc console 2>> geth.log\n```\n\nThis will open a console where you can type in basic commands to control your node/client. Your node will begin downloading the testnet blockchain, and you can check progress by checking eth.blockNumber. While the blockchain is downloading, you can still run commands. For example, let’s create an account: (remember the password!)\n\n```\n> personal.newAccount()\nPassphrase:\nRepeat passphrase:\n\"0xa88614166227d83c93f4c50be37150b9500d51fc\"\n```\n\nLet’s send some coins there and check the balance. [You can get free testnet Ether here](https://zerogox.com/ethereum/wei_faucet). Just copy-paste the address you just generated and this faucet will send you 1 testnet Ether. To check you balance, run:\n\n```\n> eth.getBalance(eth.accounts[0])\n0\n```\n\nIt will show no balance because your node hasn’t synced with the rest of the network yet. While you wait for that, check your balance [in a testnet block explorer](https://testnet.etherscan.io/). There, you can also see the current testnet highest block number (#1355293 at the time of writing), which you can use in combination with eth.blockNumber to know when your node has synced completely.\n\nOnce your node has synced, you’re ready to deploy the contracts to the testnet using Truffle. First, unlock your main geth account, so that Truffle can use it. And be sure that it holds some balance, or you won’t be able to push a new contract to the network.\n\n```\n> personal.unlockAccount(eth.accounts[0], \"mypassword\", 24*3600)\ntrue\n> eth.getBalance(eth.accounts[0])\n1000000000000000000\n```\n\nReady to go! If some of these two are not working for you, check the steps above and make sure you’ve completed them correctly. Now run:\n\n```\n$ truffle migrate --reset\n```\n\nNote that this time, it will take longer to complete, as we’re connecting to the actual network and not one simulated by testrpc. Once it completes, you can interact with the contract using the same approach as before.\n\nThe testnet-deployed version of ProofOfExistence3 can be found at the address [0xcaf216d1975f75ab3fed520e1e3325dac3e79e05](https://testnet.etherscan.io/address/0xcaf216d1975f75ab3fed520e1e3325dac3e79e05).\n\nI’ll leave the details on how to deploy to the live network to the reader. You should only do this once you’ve extensively tested your contracts in simulated and test networks. [Remember any programming error can result in monetary loss in the livenet](https://blog.ethereum.org/2016/06/17/critical-update-re-dao-vulnerability/)!\n\n# Smart Contract security in Ethereum is hard\n\n> “Smart contracts are pretty difficult to get right.” [Emin Gün Sirer](http://hackingdistributed.com/2016/07/13/reentrancy-woes/)\n\nGiven that by nature, smart contracts are computer code that define how money moves, I couldn’t end this guide without even a small note on security. I’ll be talking about smart contract security in much more depth at future posts, but here are some quick notes to get you started.\n\nSome problems you should be aware of (and avoid):\n\n- [Reentrancy](http://hackingdistributed.com/2016/07/13/reentrancy-woes/): Do not perform external calls in contracts. If you do, ensure that they are the very last thing you do.\n- [Send can fail](http://vessenes.com/ethereum-griefing-wallets-send-w-throw-considered-harmful/): When sending money, your code should always be prepared for the send function to fail.\n- [Loops can trigger gas limit](http://solidity.readthedocs.io/en/latest/security-considerations.html#gas-limit-and-loops): Be careful when looping over state variables, which can grow in size and make gas consumption hit the limits.\n- [Call stack depth limit](https://ethereum.stackexchange.com/questions/6260/solidity-callstack-attack): Don’t use recursion, and be aware that any call can fail if stack depth limit is reached.\n- [Timestamp dependency](https://github.com/ConsenSys/smart-contract-best-practices#timestamp-dependence): Do not use timestamps in critical parts of the code, because miners can manipulate them.\n\nThese are provided just as examples of unexpected behaviors that can lead for theft or destruction of funds in your smart contract. The morale is: if you’re writing smart contracts, you’re writing code that handles real money. You should be very careful! Write tests, do code reviews, and audit your code.\n\nThe best way to avoid obvious security problems is to have a solid understanding of the language. I recommend you [read the Solidity documentation](https://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html) if you have the time. We still need better tools for acceptable smart contract security.\n\nThat’s it! I hope you enjoyed reading this guide and learning your first steps in programming smart contracts in Ethereum! This is still a very new industry and there’s lot of room for new apps and tools. Feel free to contact me with ideas or prototypes.\n\nFollow me on [Steemit](https://steemit.com/@maraoz), and [Twitter](https://twitter.com/maraoz) to keep updated on our smart contract development publications.",
      "json_metadata": "{\"tags\":[\"ethereum\",\"programming\",\"tutorial\",\"guide\",\"smart-contracts\"],\"links\":[\"https://spring.io/understanding/javascript-promises\",\"https://github.com/maraoz/solidity-experiments\"]}"
    }
  ]
}
2016/08/01 16:35:12
votermaraoz
authoretherdesign
permlinknew-website-design-for-steemit
weight10000 (100.00%)
Transaction InfoBlock #3707081/Trx a61c8663aa05dca4251875d2250aef1b2bc8b54a
View Raw JSON Data
{
  "trx_id": "a61c8663aa05dca4251875d2250aef1b2bc8b54a",
  "block": 3707081,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-08-01T16:35:12",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "etherdesign",
      "permlink": "new-website-design-for-steemit",
      "weight": 10000
    }
  ]
}
2016/07/28 14:15:36
votermaraoz
authorkillerstorm
permlinkopinion-ethereum-hard-fork-severely-undermines-its-usefulness
weight10000 (100.00%)
Transaction InfoBlock #3589776/Trx 4f6e02bff9481482246e7ebe5fea6b26821f4961
View Raw JSON Data
{
  "trx_id": "4f6e02bff9481482246e7ebe5fea6b26821f4961",
  "block": 3589776,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-28T14:15:36",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "killerstorm",
      "permlink": "opinion-ethereum-hard-fork-severely-undermines-its-usefulness",
      "weight": 10000
    }
  ]
}
2016/07/28 08:24:12
votergribgo
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3582780/Trx 2448ac0a85af81d467b20e02072d7045d5e250c4
View Raw JSON Data
{
  "trx_id": "2448ac0a85af81d467b20e02072d7045d5e250c4",
  "block": 3582780,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-28T08:24:12",
  "op": [
    "vote",
    {
      "voter": "gribgo",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/22 19:02:57
votermaraoz
authordemibrener
permlinksmart-contracts-you-already-signed
weight10000 (100.00%)
Transaction InfoBlock #3424388/Trx 258f5120dc871f28abd25af8387505d1bc5249ea
View Raw JSON Data
{
  "trx_id": "258f5120dc871f28abd25af8387505d1bc5249ea",
  "block": 3424388,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-22T19:02:57",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "demibrener",
      "permlink": "smart-contracts-you-already-signed",
      "weight": 10000
    }
  ]
}
2016/07/21 23:52:00
parent authormaraoz
parent permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
authorwebokv
permlinkre-maraoz-hi-i-m-manuel-araoz-a-software-developer-from-argentina-20160721t235158445z
title
bodyTendriamos que crear una comunidad argentina
json metadata{"tags":["introduceyourself"]}
Transaction InfoBlock #3401621/Trx 5ecf3fa826798e1b2b9bc241a013263443e6eb24
View Raw JSON Data
{
  "trx_id": "5ecf3fa826798e1b2b9bc241a013263443e6eb24",
  "block": 3401621,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-21T23:52:00",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "author": "webokv",
      "permlink": "re-maraoz-hi-i-m-manuel-araoz-a-software-developer-from-argentina-20160721t235158445z",
      "title": "",
      "body": "Tendriamos que crear una comunidad argentina",
      "json_metadata": "{\"tags\":[\"introduceyourself\"]}"
    }
  ]
}
2016/07/21 23:51:39
voterwebokv
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3401615/Trx 3037dadea8eff685b9a86c469a24bf9a973db52d
View Raw JSON Data
{
  "trx_id": "3037dadea8eff685b9a86c469a24bf9a973db52d",
  "block": 3401615,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-21T23:51:39",
  "op": [
    "vote",
    {
      "voter": "webokv",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/21 05:23:24
votersander-lacerda
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3379734/Trx d9626cdd63dd6d7666eb9f16ebbebcb69f9d5be0
View Raw JSON Data
{
  "trx_id": "d9626cdd63dd6d7666eb9f16ebbebcb69f9d5be0",
  "block": 3379734,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-21T05:23:24",
  "op": [
    "vote",
    {
      "voter": "sander-lacerda",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
maraozreceived 0.016 SP curation reward for @ntomaino / does-the-steem-community-care-about-privacy
2016/07/21 01:06:30
curatormaraoz
reward26.058332 VESTS
comment authorntomaino
comment permlinkdoes-the-steem-community-care-about-privacy
Transaction InfoBlock #3374635/Virtual Operation #20
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 3374635,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 20,
  "timestamp": "2016-07-21T01:06:30",
  "op": [
    "curation_reward",
    {
      "curator": "maraoz",
      "reward": "26.058332 VESTS",
      "comment_author": "ntomaino",
      "comment_permlink": "does-the-steem-community-care-about-privacy"
    }
  ]
}
maraozreceived 24.529 SBD, 18.417 SP author reward for @maraoz / hi-i-m-manuel-araoz-a-software-developer-from-argentina
2016/07/21 00:03:09
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
sbd payout24.529 SBD
steem payout0.000 STEEM
vesting payout29988.833360 VESTS
Transaction InfoBlock #3373377/Virtual Operation #25
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 3373377,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 25,
  "timestamp": "2016-07-21T00:03:09",
  "op": [
    "author_reward",
    {
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "sbd_payout": "24.529 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "29988.833360 VESTS"
    }
  ]
}
2016/07/20 21:36:54
voterscrachit
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3370504/Trx 507fcbe1f7e61a871ad419915b63c756b9110935
View Raw JSON Data
{
  "trx_id": "507fcbe1f7e61a871ad419915b63c756b9110935",
  "block": 3370504,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T21:36:54",
  "op": [
    "vote",
    {
      "voter": "scrachit",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 20:05:57
voterubg
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3368701/Trx a079995ca0fc27fe15a2b59dcdcc0094abfccf74
View Raw JSON Data
{
  "trx_id": "a079995ca0fc27fe15a2b59dcdcc0094abfccf74",
  "block": 3368701,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T20:05:57",
  "op": [
    "vote",
    {
      "voter": "ubg",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 19:28:21
voterdwinblood
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3367956/Trx 1301f79c7dd91099409b2b9ae68b2ea605ba2da7
View Raw JSON Data
{
  "trx_id": "1301f79c7dd91099409b2b9ae68b2ea605ba2da7",
  "block": 3367956,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T19:28:21",
  "op": [
    "vote",
    {
      "voter": "dwinblood",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 18:43:09
voterntomaino
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3367059/Trx 0b5618a6209a208e16d2236725f09de693b11485
View Raw JSON Data
{
  "trx_id": "0b5618a6209a208e16d2236725f09de693b11485",
  "block": 3367059,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T18:43:09",
  "op": [
    "vote",
    {
      "voter": "ntomaino",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 18:14:03
voterdkpl
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3366482/Trx 62e503ec3f6e78a1af2446f859430463c8054aaa
View Raw JSON Data
{
  "trx_id": "62e503ec3f6e78a1af2446f859430463c8054aaa",
  "block": 3366482,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T18:14:03",
  "op": [
    "vote",
    {
      "voter": "dkpl",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 16:14:39
voteritsjoeco
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3364131/Trx 9f1baecea1ba5ee78eb999ae0b8b5d5a9bb29db8
View Raw JSON Data
{
  "trx_id": "9f1baecea1ba5ee78eb999ae0b8b5d5a9bb29db8",
  "block": 3364131,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T16:14:39",
  "op": [
    "vote",
    {
      "voter": "itsjoeco",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 14:57:48
votermaraoz
authoranandpatel
permlinkwhy-reusable-space-rockets-are-revolutionary
weight10000 (100.00%)
Transaction InfoBlock #3362609/Trx 536d9c9f97fc937bba84817470f1b0d3e494335c
View Raw JSON Data
{
  "trx_id": "536d9c9f97fc937bba84817470f1b0d3e494335c",
  "block": 3362609,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T14:57:48",
  "op": [
    "vote",
    {
      "voter": "maraoz",
      "author": "anandpatel",
      "permlink": "why-reusable-space-rockets-are-revolutionary",
      "weight": 10000
    }
  ]
}
2016/07/20 13:38:15
voterorestespaz
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3361039/Trx b9601bc04119a75abda924ffd1d5572676a2d985
View Raw JSON Data
{
  "trx_id": "b9601bc04119a75abda924ffd1d5572676a2d985",
  "block": 3361039,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T13:38:15",
  "op": [
    "vote",
    {
      "voter": "orestespaz",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 12:17:33
votersonzweil
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3359444/Trx 364e127a91e0e344f704a77fc1c4d28c51a5e07a
View Raw JSON Data
{
  "trx_id": "364e127a91e0e344f704a77fc1c4d28c51a5e07a",
  "block": 3359444,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T12:17:33",
  "op": [
    "vote",
    {
      "voter": "sonzweil",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 11:40:06
votermaurizio
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3358706/Trx 1c6e58ced19a7eadceed302c88160e62dd5201f2
View Raw JSON Data
{
  "trx_id": "1c6e58ced19a7eadceed302c88160e62dd5201f2",
  "block": 3358706,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T11:40:06",
  "op": [
    "vote",
    {
      "voter": "maurizio",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 10:31:18
voterjuneaugoldbuyer
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3357342/Trx 4cffb11b1e9d8286761165c9037792282146781c
View Raw JSON Data
{
  "trx_id": "4cffb11b1e9d8286761165c9037792282146781c",
  "block": 3357342,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T10:31:18",
  "op": [
    "vote",
    {
      "voter": "juneaugoldbuyer",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 10:06:54
voteralexx
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3356859/Trx 382dec884b61a953dab21d3fe76201820a0ec843
View Raw JSON Data
{
  "trx_id": "382dec884b61a953dab21d3fe76201820a0ec843",
  "block": 3356859,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T10:06:54",
  "op": [
    "vote",
    {
      "voter": "alexx",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 08:54:51
voterasim
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3355424/Trx 8f5dd5d9221c159a398267a0ee4f5680b1da2bd5
View Raw JSON Data
{
  "trx_id": "8f5dd5d9221c159a398267a0ee4f5680b1da2bd5",
  "block": 3355424,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T08:54:51",
  "op": [
    "vote",
    {
      "voter": "asim",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 08:32:45
voterqonq99
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3354983/Trx 07d82dfb0752cb137247acaa4665026b1412adcf
View Raw JSON Data
{
  "trx_id": "07d82dfb0752cb137247acaa4665026b1412adcf",
  "block": 3354983,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T08:32:45",
  "op": [
    "vote",
    {
      "voter": "qonq99",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 08:22:57
voterben99
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3354787/Trx 30b622bcf77390c8b6a5f3e301ebe4d99323345b
View Raw JSON Data
{
  "trx_id": "30b622bcf77390c8b6a5f3e301ebe4d99323345b",
  "block": 3354787,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T08:22:57",
  "op": [
    "vote",
    {
      "voter": "ben99",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 07:59:42
parent authormaraoz
parent permlinkselling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg
authorfernando-sanz
permlinkre-maraoz-selling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg-20160720t075943227z
title
bodyNice piece. Considering the XAG price and the fact that your price includes shipping, it might be a good opportunity for collectors. Good luck with this. Let us know.
json metadata{"tags":["marketplace"]}
Transaction InfoBlock #3354327/Trx 4a1870439a366222f536aba8b1f64bcf502d152f
View Raw JSON Data
{
  "trx_id": "4a1870439a366222f536aba8b1f64bcf502d152f",
  "block": 3354327,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T07:59:42",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "selling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg",
      "author": "fernando-sanz",
      "permlink": "re-maraoz-selling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg-20160720t075943227z",
      "title": "",
      "body": "Nice piece. Considering the XAG price and the fact that your price includes shipping, it might be a good opportunity for collectors. Good luck with this. Let us know.",
      "json_metadata": "{\"tags\":[\"marketplace\"]}"
    }
  ]
}
2016/07/20 07:54:33
voterfernando-sanz
authormaraoz
permlinkselling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg
weight10000 (100.00%)
Transaction InfoBlock #3354224/Trx 3a3adbf26fd5fd78e447e3ce904b0b7703319778
View Raw JSON Data
{
  "trx_id": "3a3adbf26fd5fd78e447e3ce904b0b7703319778",
  "block": 3354224,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T07:54:33",
  "op": [
    "vote",
    {
      "voter": "fernando-sanz",
      "author": "maraoz",
      "permlink": "selling-limited-edition-1-oz-999-silver-coin-from-the-bitcoin-bowl-in-st-petesburg",
      "weight": 10000
    }
  ]
}
2016/07/20 07:38:00
voteralaysor
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3353899/Trx 1bcb0a6d965a54dcf226193b973066c37bfd875d
View Raw JSON Data
{
  "trx_id": "1bcb0a6d965a54dcf226193b973066c37bfd875d",
  "block": 3353899,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T07:38:00",
  "op": [
    "vote",
    {
      "voter": "alaysor",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 07:26:39
voterfernando-sanz
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3353674/Trx 465a237d2ee7db957b9c74dffa227e057276b2d2
View Raw JSON Data
{
  "trx_id": "465a237d2ee7db957b9c74dffa227e057276b2d2",
  "block": 3353674,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T07:26:39",
  "op": [
    "vote",
    {
      "voter": "fernando-sanz",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 07:21:12
voterbogdanberkut
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3353565/Trx bc78e0830a1c0101fded8741bc856b08cbe366e6
View Raw JSON Data
{
  "trx_id": "bc78e0830a1c0101fded8741bc856b08cbe366e6",
  "block": 3353565,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T07:21:12",
  "op": [
    "vote",
    {
      "voter": "bogdanberkut",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 07:08:39
voterrom1379
authormaraoz
permlinkhi-i-m-manuel-araoz-a-software-developer-from-argentina
weight10000 (100.00%)
Transaction InfoBlock #3353315/Trx a27d87e710d066f7c4b0d583e0c45def9433c5fc
View Raw JSON Data
{
  "trx_id": "a27d87e710d066f7c4b0d583e0c45def9433c5fc",
  "block": 3353315,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T07:08:39",
  "op": [
    "vote",
    {
      "voter": "rom1379",
      "author": "maraoz",
      "permlink": "hi-i-m-manuel-araoz-a-software-developer-from-argentina",
      "weight": 10000
    }
  ]
}
2016/07/20 07:07:48
parent authormaraoz
parent permlinkre-ntomaino-does-the-steem-community-care-about-privacy-20160719t182523926z
authorntomaino
permlinkre-maraoz-re-ntomaino-does-the-steem-community-care-about-privacy-20160719t183626310z
title
body@@ -57,11 +57,9 @@ form - :) +. %0A%0AIn
json metadata{"tags":["steemit"]}
Transaction InfoBlock #3353298/Trx bcd240b1cbd3a4674e8f746b7cfcbe4bb079a1af
View Raw JSON Data
{
  "trx_id": "bcd240b1cbd3a4674e8f746b7cfcbe4bb079a1af",
  "block": 3353298,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2016-07-20T07:07:48",
  "op": [
    "comment",
    {
      "parent_author": "maraoz",
      "parent_permlink": "re-ntomaino-does-the-steem-community-care-about-privacy-20160719t182523926z",
      "author": "ntomaino",
      "permlink": "re-maraoz-re-ntomaino-does-the-steem-community-care-about-privacy-20160719t183626310z",
      "title": "",
      "body": "@@ -57,11 +57,9 @@\n form\n- :)\n+.\n %0A%0AIn\n",
      "json_metadata": "{\"tags\":[\"steemit\"]}"
    }
  ]
}

Account Metadata

POSTING JSON METADATA
None
JSON METADATA
None
{
  "posting_json_metadata": {},
  "json_metadata": {}
}

Auth Keys

Owner
Single Signature
Public Keys
STM64uXskKkia8TFMJZ23rEUi41Pwqd9ChQMK6xq5RibgHKWoHF5j1/1
Active
Single Signature
Public Keys
STM6pKkcEc2BYfM8fjTYt9s5LVKayvS9N5RTo9fS5wZHWxBZArxnp1/1
Posting
Single Signature
Public Keys
STM7Wqg4aozM5aFsKK944HnEgUYqM9Jb3pPf2rePrSw4w87VYj85K1/1
Memo
STM5iq4o8LKwYxs4i7xaLvH75PfUctJaHeP7fGCC7xM7dz67LW9Jg
{
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM64uXskKkia8TFMJZ23rEUi41Pwqd9ChQMK6xq5RibgHKWoHF5j",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6pKkcEc2BYfM8fjTYt9s5LVKayvS9N5RTo9fS5wZHWxBZArxnp",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7Wqg4aozM5aFsKK944HnEgUYqM9Jb3pPf2rePrSw4w87VYj85K",
        1
      ]
    ]
  },
  "memo": "STM5iq4o8LKwYxs4i7xaLvH75PfUctJaHeP7fGCC7xM7dz67LW9Jg"
}

Witness Votes

0 / 30
No active witness votes.
[]