Ecoer Logo

@rboyd

34

how we let these bits define us

steemit.com/@rboyd
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS55.46%
Net Worth
1.270USD
STEEM
0.000STEEM
SBD
2.568SBD
Effective Power
5.007SP
├── Own SP
0.637SP
└── Incoming Deleg
+4.370SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.637SP
Delegated Out
0.000SP
Delegation In
4.370SP
Effective Power
5.007SP
Reward SP (pending)
1.455SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
2.568SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "1035.630748 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7108.029058 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "2.568 SBD",
  "conversions": []
}

Account Info

namerboyd
id183955
rank1,453,712
reputation8923081322
created2017-06-09T04:22:42
recovery_accountsteem
proxyNone
post_count2
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2017-06-24T11:37:33
last_root_post2017-06-24T11:37:33
last_vote_time2017-06-24T11:37:33
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.000 STEEM
savings_balance0.000 STEEM
sbd_balance0.000 SBD
savings_sbd_balance0.000 SBD
vesting_shares1035.630748 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7108.029058 VESTS
reward_vesting_balance3010.141415 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_update2017-06-23T18:45:21
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM54rHwnLJueJkcqbQMVgRJD2dapmPceG7tJBg1Q733uigyCphLg",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.000 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2017-06-09T04:22:42",
  "curation_rewards": 3,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779082425
  },
  "guest_bloggers": [],
  "id": 183955,
  "json_metadata": "{\"profile\":{\"profile_image\":\"https://pbs.twimg.com/profile_images/644679849248866305/0zUMNQsP_400x400.png\",\"name\":\"Bobby Boyd\",\"about\":\"how we let these bits define us\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2017-06-23T18:45:21",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_post": "2017-06-24T11:37:33",
  "last_root_post": "2017-06-24T11:37:33",
  "last_vote_time": "2017-06-24T11:37:33",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM5BS4gU4MtBMWpFEfR9H4c9GfXTyqeqTMH712GwSYSKfqkHdGAm",
  "mined": false,
  "name": "rboyd",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5fVNEur4ZocBK2nfthEbptkNQ96soeoaFmmQqYSMfPsGkLADnM",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 2,
  "post_history": [],
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5hse7iVDkJcWxtbJniKmWchwf3HkyQk8oBu2hRnVN8jCJbEorU",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://pbs.twimg.com/profile_images/644679849248866305/0zUMNQsP_400x400.png\",\"name\":\"Bobby Boyd\",\"about\":\"how we let these bits define us\"}}",
  "posting_rewards": 2903,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "7108.029058 VESTS",
  "recovery_account": "steem",
  "reputation": "8923081322",
  "reset_account": "null",
  "reward_sbd_balance": "2.568 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "3010.141415 VESTS",
  "reward_vesting_steem": "1.455 STEEM",
  "savings_balance": "0.000 STEEM",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "sbd_balance": "0.000 SBD",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "1970-01-01T00:00:00",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "1035.630748 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779082425
  },
  "voting_power": 0,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 1453712
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.370 SP to @rboyd
2026/05/18 05:33:45
delegateerboyd
delegatorsteem
vesting shares7108.029058 VESTS
Transaction InfoBlock #106149790/Trx 4fd8fd31fe0c5b00694bc34cb088fcfdadbd7612
View Raw JSON Data
{
  "block": 106149790,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "7108.029058 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-18T05:33:45",
  "trx_id": "4fd8fd31fe0c5b00694bc34cb088fcfdadbd7612",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.703 SP to @rboyd
2026/05/13 01:25:42
delegateerboyd
delegatorsteem
vesting shares4395.818653 VESTS
Transaction InfoBlock #106001557/Trx ade695ff92bb9e2bd129c4eecb86cde25f1a63ec
View Raw JSON Data
{
  "block": 106001557,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "4395.818653 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-13T01:25:42",
  "trx_id": "ade695ff92bb9e2bd129c4eecb86cde25f1a63ec",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 4.378 SP to @rboyd
2026/04/26 04:46:36
delegateerboyd
delegatorsteem
vesting shares7120.544814 VESTS
Transaction InfoBlock #105517297/Trx 90210f8d893e77bdc7ce7e9c14adf674e886a362
View Raw JSON Data
{
  "block": 105517297,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "7120.544814 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-04-26T04:46:36",
  "trx_id": "90210f8d893e77bdc7ce7e9c14adf674e886a362",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.728 SP to @rboyd
2026/01/23 22:05:24
delegateerboyd
delegatorsteem
vesting shares4437.365472 VESTS
Transaction InfoBlock #102868929/Trx 83f98e6be9bd7646ffb9f31fe2c444459320cb52
View Raw JSON Data
{
  "block": 102868929,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "4437.365472 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-01-23T22:05:24",
  "trx_id": "83f98e6be9bd7646ffb9f31fe2c444459320cb52",
  "trx_in_block": 12,
  "virtual_op": 0
}
steemdelegated 2.829 SP to @rboyd
2024/12/17 17:16:00
delegateerboyd
delegatorsteem
vesting shares4601.584669 VESTS
Transaction InfoBlock #91315154/Trx 7cdb97ad71e654ad980f3c229e18d5ea6da4d33d
View Raw JSON Data
{
  "block": 91315154,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "4601.584669 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2024-12-17T17:16:00",
  "trx_id": "7cdb97ad71e654ad980f3c229e18d5ea6da4d33d",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 2.933 SP to @rboyd
2023/11/14 08:57:42
delegateerboyd
delegatorsteem
vesting shares4770.718201 VESTS
Transaction InfoBlock #79869314/Trx bf3bb6300d5ddfe41a76d367eb372f241784df0c
View Raw JSON Data
{
  "block": 79869314,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "4770.718201 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-11-14T08:57:42",
  "trx_id": "bf3bb6300d5ddfe41a76d367eb372f241784df0c",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 4.739 SP to @rboyd
2023/09/22 09:32:12
delegateerboyd
delegatorsteem
vesting shares7707.626987 VESTS
Transaction InfoBlock #78361842/Trx fa082896296bba883757b405c6593d4ff23848fa
View Raw JSON Data
{
  "block": 78361842,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "7707.626987 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-09-22T09:32:12",
  "trx_id": "fa082896296bba883757b405c6593d4ff23848fa",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 4.875 SP to @rboyd
2022/11/03 17:06:18
delegateerboyd
delegatorsteem
vesting shares7929.678425 VESTS
Transaction InfoBlock #69119711/Trx b331c7bbfe410e2e9a77e8b63d0a4bfa9e799f72
View Raw JSON Data
{
  "block": 69119711,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "7929.678425 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-11-03T17:06:18",
  "trx_id": "b331c7bbfe410e2e9a77e8b63d0a4bfa9e799f72",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 5.011 SP to @rboyd
2022/01/17 22:22:24
delegateerboyd
delegatorsteem
vesting shares8149.786026 VESTS
Transaction InfoBlock #60823043/Trx 9e0354c9b5e494a3088a47d46ae13fd1d4f75874
View Raw JSON Data
{
  "block": 60823043,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "8149.786026 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-17T22:22:24",
  "trx_id": "9e0354c9b5e494a3088a47d46ae13fd1d4f75874",
  "trx_in_block": 21,
  "virtual_op": 0
}
steemdelegated 5.124 SP to @rboyd
2021/06/14 05:35:09
delegateerboyd
delegatorsteem
vesting shares8333.980314 VESTS
Transaction InfoBlock #54613408/Trx 96bd4fbf8e7e21b82f3c24aade2180c25288c7b2
View Raw JSON Data
{
  "block": 54613408,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "8333.980314 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-06-14T05:35:09",
  "trx_id": "96bd4fbf8e7e21b82f3c24aade2180c25288c7b2",
  "trx_in_block": 14,
  "virtual_op": 0
}
steemdelegated 5.239 SP to @rboyd
2020/12/11 15:48:06
delegateerboyd
delegatorsteem
vesting shares8521.402288 VESTS
Transaction InfoBlock #49360694/Trx 38e0850fe7edc5892134796799734b9c95b488bf
View Raw JSON Data
{
  "block": 49360694,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "8521.402288 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-11T15:48:06",
  "trx_id": "38e0850fe7edc5892134796799734b9c95b488bf",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 1.176 SP to @rboyd
2020/12/06 09:24:06
delegateerboyd
delegatorsteem
vesting shares1912.543513 VESTS
Transaction InfoBlock #49212222/Trx 549d3f589070276eea606b698593df16c745f248
View Raw JSON Data
{
  "block": 49212222,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "1912.543513 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-06T09:24:06",
  "trx_id": "549d3f589070276eea606b698593df16c745f248",
  "trx_in_block": 5,
  "virtual_op": 0
}
steemdelegated 5.243 SP to @rboyd
2020/12/05 19:26:03
delegateerboyd
delegatorsteem
vesting shares8527.610142 VESTS
Transaction InfoBlock #49195780/Trx 5a5ee2e39c729cce7863829632249f452cb0d73e
View Raw JSON Data
{
  "block": 49195780,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "8527.610142 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-05T19:26:03",
  "trx_id": "5a5ee2e39c729cce7863829632249f452cb0d73e",
  "trx_in_block": 5,
  "virtual_op": 0
}
steemdelegated 1.181 SP to @rboyd
2020/11/03 01:18:33
delegateerboyd
delegatorsteem
vesting shares1920.017158 VESTS
Transaction InfoBlock #48269189/Trx 3914030c0f9353270b32244d9521acd088a21e01
View Raw JSON Data
{
  "block": 48269189,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "1920.017158 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-11-03T01:18:33",
  "trx_id": "3914030c0f9353270b32244d9521acd088a21e01",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 5.368 SP to @rboyd
2020/05/09 10:26:24
delegateerboyd
delegatorsteem
vesting shares8730.415501 VESTS
Transaction InfoBlock #43222540/Trx e9c4a074747e910bf6bb8377a530f4295fb7f97c
View Raw JSON Data
{
  "block": 43222540,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "8730.415501 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-09T10:26:24",
  "trx_id": "e9c4a074747e910bf6bb8377a530f4295fb7f97c",
  "trx_in_block": 17,
  "virtual_op": 0
}
steemdelegated 1.201 SP to @rboyd
2020/05/08 14:44:48
delegateerboyd
delegatorsteem
vesting shares1953.311140 VESTS
Transaction InfoBlock #43199470/Trx 1ce8706dde8faf0782da9e14480b2fe432de37e3
View Raw JSON Data
{
  "block": 43199470,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "1953.311140 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-08T14:44:48",
  "trx_id": "1ce8706dde8faf0782da9e14480b2fe432de37e3",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 5.376 SP to @rboyd
2020/04/16 02:52:09
delegateerboyd
delegatorsteem
vesting shares8743.302949 VESTS
Transaction InfoBlock #42568657/Trx e3b8c07de867c8098090c5d999a7b0fe7b1831e7
View Raw JSON Data
{
  "block": 42568657,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "8743.302949 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-04-16T02:52:09",
  "trx_id": "e3b8c07de867c8098090c5d999a7b0fe7b1831e7",
  "trx_in_block": 11,
  "virtual_op": 0
}
2019/06/09 05:33:30
authorsteemitboard
bodyCongratulations @rboyd! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/https://steemitboard.com/@rboyd/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@rboyd) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=rboyd)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorrboyd
parent permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
permlinksteemitboard-notify-rboyd-20190609t053330000z
title
Transaction InfoBlock #33639963/Trx 4fd69567677051535486164ca0bb06c42f605721
View Raw JSON Data
{
  "block": 33639963,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @rboyd! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/https://steemitboard.com/@rboyd/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@rboyd) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=rboyd)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "rboyd",
      "parent_permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "permlink": "steemitboard-notify-rboyd-20190609t053330000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-09T05:33:30",
  "trx_id": "4fd69567677051535486164ca0bb06c42f605721",
  "trx_in_block": 8,
  "virtual_op": 0
}
steemdelegated 5.496 SP to @rboyd
2019/05/12 19:59:06
delegateerboyd
delegatorsteem
vesting shares8938.919762 VESTS
Transaction InfoBlock #32851583/Trx fccc4b19cf2a6656092123dc4d86f43dd86d7db9
View Raw JSON Data
{
  "block": 32851583,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "8938.919762 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-12T19:59:06",
  "trx_id": "fccc4b19cf2a6656092123dc4d86f43dd86d7db9",
  "trx_in_block": 26,
  "virtual_op": 0
}
steemdelegated 5.619 SP to @rboyd
2018/05/16 23:55:09
delegateerboyd
delegatorsteem
vesting shares9138.530630 VESTS
Transaction InfoBlock #22494204/Trx 71561b830ccbe4e90689c920402d2d12f2058dc9
View Raw JSON Data
{
  "block": 22494204,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "9138.530630 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-05-16T23:55:09",
  "trx_id": "71561b830ccbe4e90689c920402d2d12f2058dc9",
  "trx_in_block": 18,
  "virtual_op": 0
}
steemdelegated 18.254 SP to @rboyd
2018/01/09 06:54:48
delegateerboyd
delegatorsteem
vesting shares29689.541268 VESTS
Transaction InfoBlock #18819892/Trx 13f64b32e23edee2a8b30f7c7002f75cf5a9202c
View Raw JSON Data
{
  "block": 18819892,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "29689.541268 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-09T06:54:48",
  "trx_id": "13f64b32e23edee2a8b30f7c7002f75cf5a9202c",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/08/10 22:20:57
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterphillipg
weight10000 (100.00%)
Transaction InfoBlock #14464324/Trx f802288b5dcdaf4ab5198a474b899da237d7d82e
View Raw JSON Data
{
  "block": 14464324,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "phillipg",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-08-10T22:20:57",
  "trx_id": "f802288b5dcdaf4ab5198a474b899da237d7d82e",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/08/10 12:52:09
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterwizzin
weight10000 (100.00%)
Transaction InfoBlock #14452966/Trx bdb5033956867dfa67eab5441309a40d4acac753
View Raw JSON Data
{
  "block": 14452966,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "wizzin",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-08-10T12:52:09",
  "trx_id": "bdb5033956867dfa67eab5441309a40d4acac753",
  "trx_in_block": 8,
  "virtual_op": 0
}
steemdelegated 18.409 SP to @rboyd
2017/08/04 05:19:51
delegateerboyd
delegatorsteem
vesting shares29940.369252 VESTS
Transaction InfoBlock #14271473/Trx c428a5cfcfde6d7737b0c6fd30fea1926d55cec3
View Raw JSON Data
{
  "block": 14271473,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "rboyd",
      "delegator": "steem",
      "vesting_shares": "29940.369252 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-08-04T05:19:51",
  "trx_id": "c428a5cfcfde6d7737b0c6fd30fea1926d55cec3",
  "trx_in_block": 7,
  "virtual_op": 0
}
2017/07/05 11:05:09
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterbakasa
weight10000 (100.00%)
Transaction InfoBlock #13415544/Trx be561e97fb9f8748e6f67ad6cc4ce829574c4fe6
View Raw JSON Data
{
  "block": 13415544,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "bakasa",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-05T11:05:09",
  "trx_id": "be561e97fb9f8748e6f67ad6cc4ce829574c4fe6",
  "trx_in_block": 18,
  "virtual_op": 0
}
rboydreceived 1.401 SBD, 1.009 SP author reward for @rboyd / translation-of-antshares-brand-strategy-announcement-pt-2
2017/07/01 11:37:33
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
sbd payout1.401 SBD
steem payout0.000 STEEM
vesting payout1640.551473 VESTS
Transaction InfoBlock #13301064/Virtual Operation #105
View Raw JSON Data
{
  "block": 13301064,
  "op": [
    "author_reward",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "sbd_payout": "1.401 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "1640.551473 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-01T11:37:33",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 105
}
rboydreceived 0.001 SP curation reward for @westminsterrealm / is-neo-the-new-eth
2017/07/01 10:03:27
comment authorwestminsterrealm
comment permlinkis-neo-the-new-eth
curatorrboyd
reward2.068798 VESTS
Transaction InfoBlock #13299184/Virtual Operation #5
View Raw JSON Data
{
  "block": 13299184,
  "op": [
    "curation_reward",
    {
      "comment_author": "westminsterrealm",
      "comment_permlink": "is-neo-the-new-eth",
      "curator": "rboyd",
      "reward": "2.068798 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-01T10:03:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 5
}
rboydreceived 0.001 SP curation reward for @lazybits / antshares-rebranded-to-neo
2017/06/30 22:41:00
comment authorlazybits
comment permlinkantshares-rebranded-to-neo
curatorrboyd
reward2.068851 VESTS
Transaction InfoBlock #13285537/Virtual Operation #11
View Raw JSON Data
{
  "block": 13285537,
  "op": [
    "curation_reward",
    {
      "comment_author": "lazybits",
      "comment_permlink": "antshares-rebranded-to-neo",
      "curator": "rboyd",
      "reward": "2.068851 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-30T22:41:00",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 11
}
rboydreceived 1.167 SBD, 0.838 SP author reward for @rboyd / translation-of-antshares-brand-strategy-announcement-pt-1
2017/06/30 19:12:30
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
sbd payout1.167 SBD
steem payout0.000 STEEM
vesting payout1363.383425 VESTS
Transaction InfoBlock #13281369/Virtual Operation #12
View Raw JSON Data
{
  "block": 13281369,
  "op": [
    "author_reward",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "sbd_payout": "1.167 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "1363.383425 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-30T19:12:30",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 12
}
rboydreceived 0.001 SP curation reward for @yongkaijing / neo-antshares-latest-info-24th-june-2017
2017/06/30 18:50:57
comment authoryongkaijing
comment permlinkneo-antshares-latest-info-24th-june-2017
curatorrboyd
reward2.068868 VESTS
Transaction InfoBlock #13280938/Virtual Operation #7
View Raw JSON Data
{
  "block": 13280938,
  "op": [
    "curation_reward",
    {
      "comment_author": "yongkaijing",
      "comment_permlink": "neo-antshares-latest-info-24th-june-2017",
      "curator": "rboyd",
      "reward": "2.068868 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-30T18:50:57",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 7
}
2017/06/25 21:40:03
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterthefez666
weight10000 (100.00%)
Transaction InfoBlock #13140687/Trx 105202bf3b4a03fa4680cd77ab513c97c774ed04
View Raw JSON Data
{
  "block": 13140687,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "thefez666",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T21:40:03",
  "trx_id": "105202bf3b4a03fa4680cd77ab513c97c774ed04",
  "trx_in_block": 21,
  "virtual_op": 0
}
2017/06/25 12:23:30
authorvajmuduke
bodyThanks for sharing this. I think ANS/NEO has a lot of potential.
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
parent authorrboyd
parent permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
permlinkre-rboyd-translation-of-antshares-brand-strategy-announcement-pt-2-20170625t122331156z
title
Transaction InfoBlock #13129562/Trx 82eb895c6eb70a04ef35aba07b393d0187ba1271
View Raw JSON Data
{
  "block": 13129562,
  "op": [
    "comment",
    {
      "author": "vajmuduke",
      "body": "Thanks for sharing this. I think ANS/NEO has a lot of potential.",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rboyd",
      "parent_permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "permlink": "re-rboyd-translation-of-antshares-brand-strategy-announcement-pt-2-20170625t122331156z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T12:23:30",
  "trx_id": "82eb895c6eb70a04ef35aba07b393d0187ba1271",
  "trx_in_block": 14,
  "virtual_op": 0
}
2017/06/25 12:22:48
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
votervajmuduke
weight10000 (100.00%)
Transaction InfoBlock #13129548/Trx 262c5f2ea5be6baa4d88a98c5e673368a4762041
View Raw JSON Data
{
  "block": 13129548,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "vajmuduke",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T12:22:48",
  "trx_id": "262c5f2ea5be6baa4d88a98c5e673368a4762041",
  "trx_in_block": 14,
  "virtual_op": 0
}
2017/06/25 06:15:18
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterthefifty9sound
weight10000 (100.00%)
Transaction InfoBlock #13122199/Trx cc9ffa1caf6d987e4699f11ee6923fcc5dc8c48c
View Raw JSON Data
{
  "block": 13122199,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "thefifty9sound",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T06:15:18",
  "trx_id": "cc9ffa1caf6d987e4699f11ee6923fcc5dc8c48c",
  "trx_in_block": 14,
  "virtual_op": 0
}
2017/06/25 06:14:54
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterthefifty9sound
weight10000 (100.00%)
Transaction InfoBlock #13122191/Trx f4c50d3a8b6a3d15e921f43c7ae9efe94841d9ec
View Raw JSON Data
{
  "block": 13122191,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "thefifty9sound",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T06:14:54",
  "trx_id": "f4c50d3a8b6a3d15e921f43c7ae9efe94841d9ec",
  "trx_in_block": 18,
  "virtual_op": 0
}
2017/06/25 02:58:12
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterchestnut
weight10000 (100.00%)
Transaction InfoBlock #13118258/Trx e4f56a00b7f96fc00ed9d4ac6417f35f888a4ade
View Raw JSON Data
{
  "block": 13118258,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "chestnut",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T02:58:12",
  "trx_id": "e4f56a00b7f96fc00ed9d4ac6417f35f888a4ade",
  "trx_in_block": 0,
  "virtual_op": 0
}
2017/06/25 02:57:42
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterchestnut
weight10000 (100.00%)
Transaction InfoBlock #13118248/Trx df50f164d084f701a5b9b2ad0a2d638df8fd108a
View Raw JSON Data
{
  "block": 13118248,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "chestnut",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T02:57:42",
  "trx_id": "df50f164d084f701a5b9b2ad0a2d638df8fd108a",
  "trx_in_block": 4,
  "virtual_op": 0
}
2017/06/25 01:46:21
authorhokutoshinken
bodyReally kind of you to share with the rest of us. Hope you at least recoup your investment through these posts. Thanks again
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
parent authorrboyd
parent permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
permlinkre-rboyd-translation-of-antshares-brand-strategy-announcement-pt-2-20170625t014621466z
title
Transaction InfoBlock #13116822/Trx 3371baefae906906590a7789afc3aba018cc4ec1
View Raw JSON Data
{
  "block": 13116822,
  "op": [
    "comment",
    {
      "author": "hokutoshinken",
      "body": "Really kind of you to share with the rest of us. Hope you at least recoup your investment through these posts. Thanks again",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rboyd",
      "parent_permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "permlink": "re-rboyd-translation-of-antshares-brand-strategy-announcement-pt-2-20170625t014621466z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T01:46:21",
  "trx_id": "3371baefae906906590a7789afc3aba018cc4ec1",
  "trx_in_block": 4,
  "virtual_op": 0
}
2017/06/25 01:45:18
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterhokutoshinken
weight10000 (100.00%)
Transaction InfoBlock #13116801/Trx feb63d79e2acbe71092a36e98b8dc750d430808b
View Raw JSON Data
{
  "block": 13116801,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "hokutoshinken",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T01:45:18",
  "trx_id": "feb63d79e2acbe71092a36e98b8dc750d430808b",
  "trx_in_block": 4,
  "virtual_op": 0
}
2017/06/25 01:39:21
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterhokutoshinken
weight10000 (100.00%)
Transaction InfoBlock #13116682/Trx c8937ecd31d54b157b13df95f8bf2400c6465092
View Raw JSON Data
{
  "block": 13116682,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "hokutoshinken",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T01:39:21",
  "trx_id": "c8937ecd31d54b157b13df95f8bf2400c6465092",
  "trx_in_block": 0,
  "virtual_op": 0
}
2017/06/25 01:21:21
authorcrowdedmind
bodyThanks for the translation man!
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
parent authorrboyd
parent permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
permlinkre-rboyd-translation-of-antshares-brand-strategy-announcement-pt-1-20170625t012116858z
title
Transaction InfoBlock #13116322/Trx 3671040e57a9bee40dceed7a50a3607499de5607
View Raw JSON Data
{
  "block": 13116322,
  "op": [
    "comment",
    {
      "author": "crowdedmind",
      "body": "Thanks for the translation man!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rboyd",
      "parent_permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "permlink": "re-rboyd-translation-of-antshares-brand-strategy-announcement-pt-1-20170625t012116858z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T01:21:21",
  "trx_id": "3671040e57a9bee40dceed7a50a3607499de5607",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/06/25 01:21:12
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
votercrowdedmind
weight10000 (100.00%)
Transaction InfoBlock #13116319/Trx f804a4aeab6824175fb622444842b4c3703661f5
View Raw JSON Data
{
  "block": 13116319,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "crowdedmind",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T01:21:12",
  "trx_id": "f804a4aeab6824175fb622444842b4c3703661f5",
  "trx_in_block": 23,
  "virtual_op": 0
}
2017/06/24 23:33:12
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
votermisstysea
weight10000 (100.00%)
Transaction InfoBlock #13114160/Trx 652f6f4c6ec91203392e48c36d1bc0b2652b3931
View Raw JSON Data
{
  "block": 13114160,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "misstysea",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T23:33:12",
  "trx_id": "652f6f4c6ec91203392e48c36d1bc0b2652b3931",
  "trx_in_block": 24,
  "virtual_op": 0
}
2017/06/24 23:14:06
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterlances
weight10000 (100.00%)
Transaction InfoBlock #13113778/Trx 5a22f3b30c259b7f6e1ab78dd5b718e86b636f26
View Raw JSON Data
{
  "block": 13113778,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "lances",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T23:14:06",
  "trx_id": "5a22f3b30c259b7f6e1ab78dd5b718e86b636f26",
  "trx_in_block": 10,
  "virtual_op": 0
}
2017/06/24 22:22:09
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
votermacattackk
weight10000 (100.00%)
Transaction InfoBlock #13112739/Trx 864e519da8e912948c8e0b86f38bad23446e926e
View Raw JSON Data
{
  "block": 13112739,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "macattackk",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T22:22:09",
  "trx_id": "864e519da8e912948c8e0b86f38bad23446e926e",
  "trx_in_block": 3,
  "virtual_op": 0
}
2017/06/24 22:22:00
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
votermacattackk
weight10000 (100.00%)
Transaction InfoBlock #13112736/Trx 3c18c1eadab99e8d9b02a1acb94cffe4cf945466
View Raw JSON Data
{
  "block": 13112736,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "macattackk",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T22:22:00",
  "trx_id": "3c18c1eadab99e8d9b02a1acb94cffe4cf945466",
  "trx_in_block": 8,
  "virtual_op": 0
}
2017/06/24 21:39:18
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterscottshapiro
weight10000 (100.00%)
Transaction InfoBlock #13111882/Trx 96b1fa96cbf832f7f25cea0d545ab768830cf795
View Raw JSON Data
{
  "block": 13111882,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "scottshapiro",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T21:39:18",
  "trx_id": "96b1fa96cbf832f7f25cea0d545ab768830cf795",
  "trx_in_block": 0,
  "virtual_op": 0
}
2017/06/24 20:05:18
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
votertdeezi
weight10000 (100.00%)
Transaction InfoBlock #13110002/Trx 69e2ddec0233770d1860e4bbced3d3fbfd0d0fe3
View Raw JSON Data
{
  "block": 13110002,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "tdeezi",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T20:05:18",
  "trx_id": "69e2ddec0233770d1860e4bbced3d3fbfd0d0fe3",
  "trx_in_block": 7,
  "virtual_op": 0
}
2017/06/24 20:02:42
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
votertdeezi
weight10000 (100.00%)
Transaction InfoBlock #13109950/Trx 883be5a5e1f64c86feb2956ec08f23775a2238d2
View Raw JSON Data
{
  "block": 13109950,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "tdeezi",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T20:02:42",
  "trx_id": "883be5a5e1f64c86feb2956ec08f23775a2238d2",
  "trx_in_block": 3,
  "virtual_op": 0
}
2017/06/24 17:59:15
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterloganhaika
weight10000 (100.00%)
Transaction InfoBlock #13107481/Trx 82651fb2af93e58d9b212fd5d17d2ae589c5f752
View Raw JSON Data
{
  "block": 13107481,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "loganhaika",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T17:59:15",
  "trx_id": "82651fb2af93e58d9b212fd5d17d2ae589c5f752",
  "trx_in_block": 33,
  "virtual_op": 0
}
2017/06/24 17:23:30
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterloganhaika
weight10000 (100.00%)
Transaction InfoBlock #13106766/Trx 986332219604c8760f9beb1e85684a0ed27ce912
View Raw JSON Data
{
  "block": 13106766,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "loganhaika",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T17:23:30",
  "trx_id": "986332219604c8760f9beb1e85684a0ed27ce912",
  "trx_in_block": 27,
  "virtual_op": 0
}
2017/06/24 16:59:06
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterrunridefly
weight200 (2.00%)
Transaction InfoBlock #13106278/Trx 6c681269b6c9cd06a6ca4e6b46c85c943e67e387
View Raw JSON Data
{
  "block": 13106278,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "runridefly",
      "weight": 200
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T16:59:06",
  "trx_id": "6c681269b6c9cd06a6ca4e6b46c85c943e67e387",
  "trx_in_block": 15,
  "virtual_op": 0
}
2017/06/24 16:58:48
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voternaturallin
weight10000 (100.00%)
Transaction InfoBlock #13106272/Trx 1cf71639e01585a687bf8ece5401a5bacb597852
View Raw JSON Data
{
  "block": 13106272,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "naturallin",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T16:58:48",
  "trx_id": "1cf71639e01585a687bf8ece5401a5bacb597852",
  "trx_in_block": 26,
  "virtual_op": 0
}
2017/06/24 16:44:21
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voteryogi
weight10000 (100.00%)
Transaction InfoBlock #13105983/Trx 83bb67f22391d3c352b77bed6b27c439b00e77b8
View Raw JSON Data
{
  "block": 13105983,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "yogi",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T16:44:21",
  "trx_id": "83bb67f22391d3c352b77bed6b27c439b00e77b8",
  "trx_in_block": 18,
  "virtual_op": 0
}
2017/06/24 16:39:48
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voteryogi
weight10000 (100.00%)
Transaction InfoBlock #13105892/Trx fb0e8f63da599d18897314578ba97fd15db8217a
View Raw JSON Data
{
  "block": 13105892,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "yogi",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T16:39:48",
  "trx_id": "fb0e8f63da599d18897314578ba97fd15db8217a",
  "trx_in_block": 8,
  "virtual_op": 0
}
2017/06/24 16:32:33
authorikegass33
bodyThank you for doing this, I thumbed up both sections. Hopefully we hear more from ANS in the future.
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
parent authorrboyd
parent permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
permlinkre-rboyd-translation-of-antshares-brand-strategy-announcement-pt-2-20170624t163231265z
title
Transaction InfoBlock #13105747/Trx da71a3c9e993a5f7916dde39002b6fb2b0f18fdd
View Raw JSON Data
{
  "block": 13105747,
  "op": [
    "comment",
    {
      "author": "ikegass33",
      "body": "Thank you for doing this, I thumbed up both sections. Hopefully we hear more from ANS in the future.",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rboyd",
      "parent_permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "permlink": "re-rboyd-translation-of-antshares-brand-strategy-announcement-pt-2-20170624t163231265z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T16:32:33",
  "trx_id": "da71a3c9e993a5f7916dde39002b6fb2b0f18fdd",
  "trx_in_block": 18,
  "virtual_op": 0
}
2017/06/24 16:32:06
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterikegass33
weight5200 (52.00%)
Transaction InfoBlock #13105738/Trx d0f0a62a16aa47a8eb9b791e7147b5136d74bd2f
View Raw JSON Data
{
  "block": 13105738,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "ikegass33",
      "weight": 5200
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T16:32:06",
  "trx_id": "d0f0a62a16aa47a8eb9b791e7147b5136d74bd2f",
  "trx_in_block": 2,
  "virtual_op": 0
}
2017/06/24 16:25:06
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterikegass33
weight4800 (48.00%)
Transaction InfoBlock #13105598/Trx fbd21e07682e9e69c23aa3b11e13e4946ecea8eb
View Raw JSON Data
{
  "block": 13105598,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "ikegass33",
      "weight": 4800
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T16:25:06",
  "trx_id": "fbd21e07682e9e69c23aa3b11e13e4946ecea8eb",
  "trx_in_block": 39,
  "virtual_op": 0
}
2017/06/24 15:59:33
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterblackjok3r
weight10000 (100.00%)
Transaction InfoBlock #13105087/Trx 9596e86085c81b6df4761e0c58cf89521c72c2fb
View Raw JSON Data
{
  "block": 13105087,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "blackjok3r",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T15:59:33",
  "trx_id": "9596e86085c81b6df4761e0c58cf89521c72c2fb",
  "trx_in_block": 11,
  "virtual_op": 0
}
2017/06/24 15:47:06
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterblackjok3r
weight10000 (100.00%)
Transaction InfoBlock #13104838/Trx b5bf1acbd238ade26b4e907fa15b37cc562ed39f
View Raw JSON Data
{
  "block": 13104838,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "blackjok3r",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T15:47:06",
  "trx_id": "b5bf1acbd238ade26b4e907fa15b37cc562ed39f",
  "trx_in_block": 11,
  "virtual_op": 0
}
2017/06/24 15:04:21
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterensmardo
weight10000 (100.00%)
Transaction InfoBlock #13103983/Trx fc041d7458b77f5684d458691f2388d11411fb74
View Raw JSON Data
{
  "block": 13103983,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "ensmardo",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T15:04:21",
  "trx_id": "fc041d7458b77f5684d458691f2388d11411fb74",
  "trx_in_block": 10,
  "virtual_op": 0
}
2017/06/24 15:03:48
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterensmardo
weight10000 (100.00%)
Transaction InfoBlock #13103972/Trx 08cf6e5da074b76c50e0f9103cc3641cc6f1f114
View Raw JSON Data
{
  "block": 13103972,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "ensmardo",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T15:03:48",
  "trx_id": "08cf6e5da074b76c50e0f9103cc3641cc6f1f114",
  "trx_in_block": 1,
  "virtual_op": 0
}
2017/06/24 14:13:15
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voternarcis2007
weight10000 (100.00%)
Transaction InfoBlock #13102961/Trx 25f0ff553a00eda0d80f5e733a1dc367288bb3f0
View Raw JSON Data
{
  "block": 13102961,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "narcis2007",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T14:13:15",
  "trx_id": "25f0ff553a00eda0d80f5e733a1dc367288bb3f0",
  "trx_in_block": 31,
  "virtual_op": 0
}
2017/06/24 14:08:03
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voternarcis2007
weight10000 (100.00%)
Transaction InfoBlock #13102857/Trx e907f782e0192531abe89fa655e7c884f8319c84
View Raw JSON Data
{
  "block": 13102857,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "narcis2007",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T14:08:03",
  "trx_id": "e907f782e0192531abe89fa655e7c884f8319c84",
  "trx_in_block": 20,
  "virtual_op": 0
}
2017/06/24 12:43:27
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
votermrilevi
weight10000 (100.00%)
Transaction InfoBlock #13101165/Trx 04f4645093d09804f9a7f8b58a2135a472c41d66
View Raw JSON Data
{
  "block": 13101165,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "mrilevi",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T12:43:27",
  "trx_id": "04f4645093d09804f9a7f8b58a2135a472c41d66",
  "trx_in_block": 5,
  "virtual_op": 0
}
2017/06/24 11:38:27
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterflyhighlittleone
weight10000 (100.00%)
Transaction InfoBlock #13099865/Trx d53c33ca80b88ead66fc62536738a75151831d20
View Raw JSON Data
{
  "block": 13099865,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "flyhighlittleone",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T11:38:27",
  "trx_id": "d53c33ca80b88ead66fc62536738a75151831d20",
  "trx_in_block": 14,
  "virtual_op": 0
}
2017/06/24 11:37:33
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
voterrboyd
weight10000 (100.00%)
Transaction InfoBlock #13099847/Trx 18b5e05f30a9f809479caf2e0a251129825410cb
View Raw JSON Data
{
  "block": 13099847,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "voter": "rboyd",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T11:37:33",
  "trx_id": "18b5e05f30a9f809479caf2e0a251129825410cb",
  "trx_in_block": 23,
  "virtual_op": 0
}
2017/06/24 11:37:33
authorrboyd
bodyDetailed look at NEO ($ANS) technology with Ethereum comparison matrix. In this part 2 of the series, CTO Erik Zhang breaks it all down for us. Catch up on [part 1 here](https://steemit.com/cryptocurrency/@rboyd/translation-of-antshares-brand-strategy-announcement-pt-1) if you missed it. ![neo-cto-preso.jpg](https://steemitimages.com/DQmTD1HKn45ZzQb4VqLN8iV8NYfiuFfKx352nHsEor6G74K/neo-cto-preso.jpg) 2:39:00 Hi everyone. I will introduce to you NEO smart contract and as said earlier it’s evolved from Antshares brand. I will explain what NEO’s benefit is and the power of its smart contracts. First of all I want to explain to everyone what a smart contract is. It’s an old concept actually. Back in 1994, a cryptographer brought up the concept of smart contract. In a nutshell, a smart contract is a contract that can be enforced by computer. The term of the contract can be executed automatically by computer. Such contract is a smart contract. What does it mean by “term of the contract can be executed automatically by computer?” Regularly a contract that formed between two persons might be recorded using paper and signed by them. After the signing the contract is in effect. The terms of the contract are enforced by human being, and not by machine. Even if we digitized it using as a word document and digitally signed as a digital contract, it still needs to be enforced by human. So smart contract doesn’t only digitalize a contract, but also convert it into a program so that terms of the contract can be automatically executed by computers. So this is smart contract. 2:40:54 Here’s an example. An example from real life, as the concept has been around for a long time. The example is vending machine. It’s a real story, I was taking a train. When I was at train station, I was thirsty, so I want to buy a can of coke. The price was CNY4 for 1 can. So at the vending machine I insert coins. After 4 coins there’s no coke coming out. So I hit the refund button and it returned 2 coins. I was thinking it’s malfunctioning, and inserted those 2 coins back. Still no coke. Then after it only returned 1 coin after I hit the button. So I loss 3 coins, and was very unhappy about it. In the end I still got the coke, as I used WeChat to pay another CNY4. So I payed CNY7 for a can of coke. Later I examined the vending machine and found a small paper stacked to it. It said: “Don’t use before 8am or after 6pm as someone might maliciously block the coin insert to disable the machine.” The vending machine is a smart contract. It will execute the order of purchasing drinks. So you insert coins, it calculate the prices and give you corresponding goods. I got the coke paying a price way over the listing price which means the contract is executed correctly. And the reason for that is some one maliciously blocked the coin insert. Which means the smart contract is maliciously modified. And that’s why a concept originate from 94 yet still not widely apply to everyday life, because the lack of a secure and reliable execution environment for the smart contract, as it can be easily modified by other people. 2:42:53 What is blockchain? Blockchain naturally has these properties: modify-prohibited, traceable, fair, open and transparent. So it can naturally provide a secure and reliable execution environment for the smart contract. So that’s why it’s good combination for smart contract and blockchain. We cannot talk about blockchain and not talk about BitCoin. In bitcoin there’s a script system that can be considered the first occurrence of smart contract that based on blockchain. What’s the meaning of using blockchain as bitcoin’s smart contract? I have two charts here. On the left side is the execution engine for bitcoin, used for executing smart contract. It provide a simple instruction set such as constant, constant instructions and conditional branch, even some stack operation as it’s a stack-based virtual machine. Also has string manipulation , logical operator, arithmetic operator and especially cryptology instructions as it use such function quite a lot. What’s the purpose of all these? Its main purpose is account integrity. As we send some bitcoin from one address to another, we need others to verify the owner of the address, which running a piece of script. We run a smart contract, and it will verify the signing of the contract matches the public key or not. There are more complicated application such as multi-party signing. It may have a number of persons and need a part of them to sign a contract so they can transfer out a sum of money. That’s also in the bitcoin’s script system. The regular account and multi-party account are also known as standard contract or standard address. As their format are fixed. There are also non-standard address that can have customized authentication logic for your account. So that’s the smart contract in bitcoin. 2:45:24 But the blockchain that evolved around smart contract is not bitcoin, it’s ethereum. Bitcoin and ethereum are similar blockchain system, but ethereum optimized and enhanced around smart contract. There are several points. 1st one is it upgraded the smart contract system to Turing-complete. Once it’s Turing-complete, I can use it to describe any logic. So the terms of the smart contract can be very diverse unlike bitcoin, which can only describe simple logic. That’s point one. 2nd one is economic model, it introduced a new economic model. As it’s Turing-complete the logic can be anything, such as infinite loop, a program that will never end, and deploy it into the blockchain. It would be unrealistic for us to let it run on the blockchain. So when ethereum runs an instruction, it deduct a certain amount of ethereum. Once your balance reach 0, the program will terminate as you don’t have sufficient balance to keep it running. So that they introduced the new economic system to make sure that Turing-complete programs can be terminated. Also these part of fees will be awarded to miner to incentivize them to keep mining and maintain the network. The last point. The ethereum provide a new feature to smart contract called persistent storage. It means the smart contract can save generated data to a storage area inside blockchain while running. It can be read while the program was running again. So that’s persistent storage. With this feature, one usage is data archiving. We can store some data in it. The 2nd usage is token issuing. We know that there are a lot of ICO project, and they are issuing their own token. And those tokens are implemented using persistent storage to store account and records. And that’s the system for token issuing. 2:48:15 So here’s our NEO. NEO not only has this Turing-complete smart contract system. And Da already introduced other two important part: one is digital assets, the other is digital identity. Since Da explained those already, I will only talk about smart contract in depth and what’s different in NEO’s smart contract. It can be summarized in 3 points. 1st is certainty, as smart contract has very strong certainty. 2nd is high performance. Its execution will be very fast. 3rd is extensibility. Here’s a comparison between NEO, ethereum and [fabric hyperledger](https://hyperledger-fabric.readthedocs.io/en/latest/)’s certainty aspect. Let’s divide the certainty to 3 part. 1st is contract interoperability. Interoperability means smart contract A can call smart contract B’s function, and use B’s result as data. All 3 platform has this ability. It’s a very common ability, but there’s some nuance. NEO limited the interoperability to static calling. Here we need to differentiate static calling and dynamic calling. A dynamic call can choose the target during runtime. A static calling can only target the function that was decided during coding. This is quite a big difference. If I treat A as program entry and B as a function, and in dynamic calling, A can choose to call B or C or D. So if there’s a bug in B, I can upgrade it to C or D, so I don’t need to change A. It’s easy for the users as they only need to remember A. So it means smart contract can be hot patched and dynamically upgraded. But there’s a downside, as upgrade is two edge sword. You may upgrade it to a better state or to a worse state. As a user, they can’t distinguish between what’s behind the scene when they using A, as it may call B or C to get better or worse result. And that’s a certainty on the user side. To prevent this, NEO remove dynamic calling during design stage, left only static calling. So when writing smart contract, you need to decide which contract to call. If you want to upgrade B, you will need to upgrade A too. That’s the 1st one. 2:51:41 The 2nd one is system call. For the most time, when a program runs for one time, the result is such, and runs 100 times, it will still be such. But there are exceptions. Such as a program that generate random numbers. Maybe now I runs it, it shows 2, but I may get 5 later. Other people may get different result as the result is random. Another example, accessing system time. Right now the result could be 11:00, later it may give me 11:05. So the result will change every time. So if these uncertain system call can be called from smart contract, what will be the consequence? The blockchain is a distributed system, every node has different aspect. So if every node runs a program and produce different result, they can no longer reach an agreement. This kind of inconsistency is not allowed. So to run a smart contract on a blockchain system, it must remove all the uncertain system calls. So it’s completely excluded from NEO. Ethereum also don’t have system calls. This is a downside of fabric, it asks the developers to restrain themselves from calling uncertain system calls. It can be done, but it’s hard to guarantee. So that’s a downside. The 3rd point is ability to access internet resources. If we allow a smart contract to access internet resources, it can be very convenient. As it can directly access the today’s stock price and to influence the conditional branches in smart contract. It’s very convenient, but the problem is different node access even the same URL can get different result. A simple example is when searching a keyword using Google, even everyone use the same keyword, but due to different IP addresses, results can be different. So the ability to access internet would bring uncertainty to smart contract. So we didn’t make it into NEO during design process. Ethereum also don’t have it, but fabric, again, has this ability which introduce uncertainty. So that’s a comparison on uncertainty. 2:54:38 The following is a comparison on performance. It’s still between these 3 platforms. The first thing is the deployment of the smart contracts. The performance is closely related to the execution environment. NEO has a in-house smart contract virtual machine called NEOVM, ethereum has their own called EVM. Fabric use a mature product called Docker. Docker is not a virtual machine, it’s a resource quarantine technology. It’s used as a smart contract execution environment in fabric. Again we divided it into three categories. 1st one is contract deployment. It’s millisecond level on NEOVM and EVM, but it’s a painful process in Docker and would take seconds. 2nd is contract loading. Contract loading is to load a contract from the blockchain and execute it. It’s also a simple process in NEOVM and EVM as would took milliseconds. It again will be difficult for Docker and would took seconds. It’s a very big gap in performance. The last one is where Docker shines, it’s smart contract execution. Since Docker’s programs are running on physical machines, so it’s very fast. NEOVM and EVM are interpreter so it’s slower compared to Docker. It’s also a very big gap. But no big deal, we can use JIT, Just-in-time compilation to optimize the performance, to reach almost the efficiency of physical machines. Even without JIT optimization, it’s ok since the programs on the blockchain are really short, the deployment and loading speed is more important than execution speed. Blockchain programs are not like real world programs taking megabytes of spaces and heavily relying on computing power. The smart contract on blockchain are only used for simple conditional operation so the execution time will be really short. So the execution time are not that important. 2:56:56 3rd comparison is about extensibility. Still between aforementioned 3 platforms. 1st point is the concurrency of contact execution. Can smart contracts on blockchain be executed concurrently? It depends. As we know, the smart contracts can access a private persistent storage, it can read/write some data. If the contract can only read/write its own data, then there’s no problem, as long as each different contracts access different data, then they are not related so they can run concurrently. But smart contracts can call each others and one contract can be run multiple times. So when they call each other, one contract might access my data, and I might access other contracts’ data. If different contract could access same data, then you will have to execute them serially in order, and not concurrently. If you want to execute contract concurrently on blockchain, what could you do? You can use sharding. We can use two methods. One is static sharding, which will be used by ethereum. It will divide those smart contracts into different shard, for example 256 shards, and put contracts into those shards. Concurrency can be achieved between different shards. But within a shard, contracts can only be executed serially. And contracts cannot call each other when they are not in the same shard. So when there’s no dependency, they can be executed concurrently. So this is static sharding method. It’s not bad, but the downside is you have to plan for the sharding beforehand, as it cannot be changed after it’s done. NEO use the second method: dynamic sharding. The reason we can use dynamic sharding is because we only allow static calling. Static calling means while we are writing the contract, we already know what contract we are going to call and what data we are going to access. This is decided beforehand, not in runtime. Thus we can calculate the call numbers before we run it so we can calculate the dependency and dynamically sharding at runtime. Since it’s sharding at runtime, it can be very flexible. So it can adjust sharding to the performance at runtime to keep the performance at peak condition. Docker doesn’t support this. 2nd point is coupling, which also related the next point – portability. Coupling refers to the virtual machine’s dependency with blockchain node. Ethereum didn’t handle this very well, but docker excels, as docker doesn’t relate to blockchain technology. While fabric choose it as execution environment, it has very low coupling with blockchain system. Almost none coupling. You can port it to other blockchain or other non-blockchain product. But that’s not the case for EVM, as EVM coupled too many blockchain related instructions. For instance, it use an instruction for calculating contract’s consumption, another instruction for creating a new contract, yet another instruction for contract accessing data. That’s a very high level of coupling with blockchain, you can’t port the code to other system. 3:01:20 I just introduced NEO’s smart contract and its features. Now I will explain how can we develop contracts for it. It’s very convenient. Visual Studio, and IDE. We can develop smart contract using VS. Since we just rebrand to NEO from Antshares, so someplace we still uses old branding. You can find our plugin in Visual Studio’s plugin store using keyword “anshares,” it can be used to write NEO smart contracts. Once you download and installed it, you will find a smart contract template when creating new project. Once you created project using the template, it will show you are simple program which is a smart contract. We can see it only has one line of code, it will call a function named “stoage.put” which put data into your contract’s storage area. The data is store in key-value pair. Here the key is “hello” and the value is “world”. So it stores hello world into the storage area. You can delete this code from the template and code your own logic in C# or other languages. We used C# in this example, but we are supporting more language in the future. In .net, we are supporting all the languages, C#, VB, F# are already fully supported. 2nd is Java, Java is one of the language that has the most developers, it’s also fully supported. So you can use Java to code NEO smart contracts. 3rd is Kotlin, which just recently recommend by Google to code for Android apps. We used to use Java, but now Google officially recommend using Kotlin. It’s also fully supported. The uppers ones are all now fully supported. The lower ones are going to be supported in the future. 1st one is go, we are developing compiler for it so that you can write smart contract using go. JavaScript and python. And we are going to support more high level programming languages. 3:04:09 OK, here’s another set of comparison. A comparison between development environment. We just announced our support for those mainstream languages. The first row is high level languages. Fabric is best in this area, since it’s using Docker, so it can support any language as long as you have a compiler for it. We support those mainstream languages that we announced. And we believe that we can cover 99% of developers by supporting those languages. I think that’s not bad. Ethereum are not looking good in this area as it only support 4 language to write smart contracts. Also those 4 languages are created by them so quite a steep learning curve. And the most common one, solidity, is quite hard to learn. Community volume, as the total numbers of the developers. There are over tens millions of developers worldwide, since we are covering 99% of them, they can provide smart contract in our ecosystem. But for ethereum, solidity developers maybe in thousands, and that’s a small community volume. The last one is the IDE, which indicate the easiness of the development. Since NEO is very portable, so we can easily integrate it with IDEs and use IDEs’ debugger to debug your code. Fabric has the same abilities. But Ethereum lacks support in this area. 3:05:50 Here’s a architecture map for NEOVM smart contract system. As we can see, on the upper left side, those are language compilers. They allow you to use familiar language to write smart contracts. After compilation, it will generate a program that can be run in the NEOVM. The VM provide some simple instructions. The VM which represented in the green box provide several instructions, one of them is quite interesting, called “interoperation service layer” invoke instruction. Interoperation service layer is represent in the blue box on the right side. If you consider the green box(VM) as a CPU, then the blue box(ISL) can be viewed as a system bus which allows you to connect to different peripherals. We know that CPU doesn’t have too much functions, it can do some arithmetic and logic computations, but doesn’t connect to the internet. If you need a program in CPU to access the internet, you will need a network card. If you need to store some data, but the CPU cannot store data in itself, so you will need to connect a hard drive, then CPU can call functions in hard drive to store data. So the blue box as a system bus can connect to different services so that smart contract have different feature and ability. Let’s focus on the text list on the right side. So our whole smart contract system contains development tools including IDE, compilers and development frameworks. Below is the execution environment, such as runtime, stack and interoperation service layer. So that’s the whole architecture. 3:08:22 Here’s another comparison. This one is on VMs. 1st let’s compare instruction set. NEOVM provides a simple instruction set, including arithmetic and logic operations, conditional branches and cryptology instructions. EVM provides a specialized instruction sets. It provides not only those NEOVM has, but also those I mentioned earlier, like the ones that’s coupled with blockchain. Dockers rely on the low level hardware to provide instruction set. For example if it’s running on an X86 computer, then it provides X86 instruction sets. When it’s on ARM platform, then it’s ARM instruction set. The problem is it requires all the node on the blockchain to be one single architecture. You can’t have some x86 ones and some ARM ones, the smart contracts won’t work on this network. But Fabric can get around this because it’s aiming at alliance chains, in an alliance chain you can require alliance members to using same architecture for nodes and server. This is not possible in public chains, so they must have consistency in architecture. 3:09:48 2nd one is service. NEOVM provides are service layer, and different services can be plugged in. Docker also provide a similar mechanism, which is to use gRPC as an API. It allows smart contract to communicate with gRPC to access API at runtime. But EVM are providing services using instruction sets, and this will obstruct next point, which is function scalability. When I want to extend functions, it’s quite easy in NEOVM, you can just register a new service on interoperation service layer. Docker is the same, just add an API to gRPC. But if you want to add to EVM then it’s complicated. Think it as a computer, you want to add a function, just plug in an USB, but in EVM you must break down the computer, find the IC and solder some new chips on it and put it all back. That’s a lot of work, so it’s very hard to extend EVM’s functions. 3:11:05 What does NEO provides on Interoperation service layer? There’s 4 services. 1st one is blockchain ledger, this service allows smart contracts access all the blocks, transaction, accounts and their field during runtime. It can read any user’s balance and assets. 2nd one is digital assets, it only allow contracts at runtime to access and manage digital assets. 3rd one is smart contracts. You may wonder why provide a smart contract service to a smart contract? Our smart contracts can dynamically create smart contract, migrate and upgrade current contracts and even destroy the contracts. 4th one is persistency, this is very similar to Ethereum, which allows contract to read and write data, including deleting data. But there’s also some minor difference as I will talk about it later. 3:12:33 Let’s talk about digital assets first, yet another comparison. We will exclude Fabric, just NEO and Ethereum on digital assets. We know Ethereum has a lot of ICO projects, every projects will issue their own token. This is a very common feature, the Ethereum supports it well, NEO also supports it , because it can store contract data. But the second point, NEO also provides digital identities, which is not present in Ethereum. The reason is not they don’t want to, but it’s against their design goal. We know that Ethereum and Bitcoin are designed to have anonymous ,anti-censorship and decentralization. So it’s not necessary for them to provide a digital identity to expose the person behind it. NEO provides such feature, through a simple method – digital certificate, using existing KPI system, which we will have some upgrades for it. 3:13:43 When you have digital identities, we can do assets digitalization. Da said in his speech, assets digitalization is to map some assets from real physical world to blockchain. What’s the essence of this? The essence is credit. For instance, bank is a strong credit organization, you deposit some money into the bank, they save it on their servers or accounting systems. This deposit is actually digital assets issued by bank. It’s different from the paper bill you deposited. Why is that? Let’s say the bank is closed or bankrupted, is there any use of your deposit? It’s just some data in the account. Assets digitalization is some credible entity using their own credit as warrant, make a promise about one to one exchange of digital assets and real life assets. If this digital assets are recorded on blockchain, then it’s assets digitalization on blockchain. Since the essence is credit, it means identity. Only identity can provides credibility, anonymity is not creditable. We can only digitalize assets after we have digital identity. Since we have digital identity, we can support assets digitalization. Ethereum cannot support this, it can only issue tokens, which are generated on blockchain. 3:15:25 Then let’s compare persistent storage, again with Ethereum. 1st one is authentication of storage, that’s every contract has permission to access their own private storage area. Is there any way for other contracts to access my storage area? It’s also allowed. Ethereum has a simple solution, it provides two instructions, 1st one is named “call” , 2nd one is named “call code”. To use CALL, I can call a contract, and the contract in its context, can access its own storage area, when the execution returns, I continue my execution. The other one CALL CODE allows me to load a contract and load its code into my context and can access my storage area. So that’s how ethereum allows data access between contracts, but it’s not flexible enough. NEO provide a flexible mechanism: every contract can gain the read permission of their own storage area, and grant it to another contract called by it, like authorizing other contract to access its own storage area. The called contract can access its own storage area, and the storage area you as a caller granted it. Since the contracts are in a calling chain, it can access multiple contracts, every one on the calling chains can access others’ storage area as long as they have been granted permissions. It’s very flexible. 3:17:22 2nd one is contract migrations. In Ethereum, if a contract has a bug, and you want to modify it, you must create a new contract, but the data cannot be migrated. You have to let user to manually send the assets into the new contract, which is very difficult. But in NEO we provide a very simple contract migration feature, a contract can create a sub contract during runtime, at the same time move all the data to the new contract. This is contract migrations. 3:17:59 Last one is about the size of the storage. In Ethereum the data has a strict length limit of 256bit, which is 32 bytes, cannot be longer or shorter. If you want to save 1KB of data, you have to divide it into several 32 bytes, then save in different data records, very inconvenient. In NEO we don’t limit the length of data, but we charge by the length of data. The bigger your data, the more it costs. But it doesn’t have length limit, which is very convenient. 3:18:37 At last I have some sample contracts, which I already uploaded to GitHub. There are many samples, I will introduce 3 of them. 1st one is lock account, 2nd one is decentralized domain system, last one is token issuing. This is the sample code from our GitHub. Let’s see the first one, lock account. This contract is very simple, 3 lines of code in total. Let me describe its usage. Usually for an account, its permission is very simple, I use a private key to sign a transaction, then send the transaction, others will verify my signature, once the verification passed then I have the ownership of this account and can freely use the money in this account. But in some situation, I may want to lock my account for a period of time, so that before the time reaches, no one can use the money inside my account. To achieve this, I need to add some code the this basic account. Let’s check the code. First line, blockchain.getheight means when I call this function, it will return the height of the whole blockchain. The Current height is the latest blockchain’s height. Once I got the data, I pass the height to getHeader, and save the header of the blockchain to header variable. There are some properties in block header, one of them is time stamp, the time that block was generated. NEO will generate 1 block in every 15 seconds, so the timestamp in the block header may have some margin of error, but it will be less than 15 seconds so it’s minor. Then we can use this time, to compare it to a time that was pre-determined by us, if the current time has not reach the set time, the account is locked, so we return false to prohibit account operations. If the time has already passed, we can validate the signature and verify this person is the owner or not. If verification passes, then he can operate on this account. Very simple logic. 3:22:35 Let’s see the second sample. This one is a bit complicated. We can see it’s 5 functions. One is main, it’s a decentralized domain name management system. To manage, it has a function, which will take some parameters, the first one is operation, what I want to do, like register a domain name or transfer one or delete one. The 1st is query, it will verify the current caller of the smart contract need to check a domain name, it will execute the query function. Query is easy, it accepts a parameter named domain name, the function will take the name to the storage are and access its record, then return the data to the caller. The 2nd is register. When registering, it will take 3 parameters, the first one is the domain name, second one is the owner, third one is the signature. The logic is simple too, first I will need to verify the signature, to check the caller is actually the one called, and will return false when verification failed. When verification passed, to check if the name is already registered. So I will try access the storage area and find the record, if record is found then it’s already registered and will return false. If there’s no record then you can register and I will write the new owner info into the storage area and return true to show it’s successful. That’s domain registration. The 3rd is transfer. The 4 parameters are domain name, signature of owner, and the recipient, and the signature of recipient. The logic is we need to verify signatures, to see the recipient is willing to accept this domain name, if the recipient is unwilling then return false. The second is to read the domain name record, if cannot be found then it’s an unregistered name, return false. Once the record is found we need to verify the caller is the owner via signature, if not return false. When everything passed means we can transfer the name, and write the new owner’s information into the storage area then return true. The last one is delete. The logic is similar to last one, which we need to verify a signature, only the domain name owner can delete their names. That’s after verifying it’s registered, since we cannot verify signature without domain record. Every thing’s passed then we delete the record and return true. So this is a simple and basic decentralized blockchain domain name management system. 3:26:53 The last one is token issuing, and I don’t have time for it now, it’s very easy to understand though. Because we already save a set of record for domain name owners, we can do registering and transferring. If we change the domain name to a token, it’s the same principle. So it will be easy for you to write a token transfer and issuing system following the domain system. -- If you made it this far and these translations are useful to you please comment/share/tweet/upvote/consider donating so that we can spread the expense as a community. The freelancers I found are good but they weren't cheap! If you're a native speaker and can translate future announcements I'd encourage you to do so and the rest of us will happily donate! I'll publish an accounting for any donations sent and only use them to offset translation services. Translations donation address : 0xd42b38Fa09665747FAD4DA1F33a0777E340F1d10
json metadata{"tags":["cryptocurrency","ethereum","antshares","neo","blockchain"],"image":["https://steemitimages.com/DQmTD1HKn45ZzQb4VqLN8iV8NYfiuFfKx352nHsEor6G74K/neo-cto-preso.jpg"],"links":["https://steemit.com/cryptocurrency/@rboyd/translation-of-antshares-brand-strategy-announcement-pt-1","https://hyperledger-fabric.readthedocs.io/en/latest/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcryptocurrency
permlinktranslation-of-antshares-brand-strategy-announcement-pt-2
titleTranslation of Antshares Brand Strategy Announcement (pt. 2)
Transaction InfoBlock #13099847/Trx 18b5e05f30a9f809479caf2e0a251129825410cb
View Raw JSON Data
{
  "block": 13099847,
  "op": [
    "comment",
    {
      "author": "rboyd",
      "body": "Detailed look at NEO ($ANS) technology with Ethereum comparison matrix. In this part 2 of the series, CTO Erik Zhang breaks it all down for us. Catch up on [part 1 here](https://steemit.com/cryptocurrency/@rboyd/translation-of-antshares-brand-strategy-announcement-pt-1) if you missed it.\n\n![neo-cto-preso.jpg](https://steemitimages.com/DQmTD1HKn45ZzQb4VqLN8iV8NYfiuFfKx352nHsEor6G74K/neo-cto-preso.jpg)\n\n2:39:00\n\nHi everyone. I will introduce to you NEO smart contract and as said earlier it’s evolved from Antshares brand. I will explain what NEO’s benefit is and the power of its smart contracts.\n\nFirst of all I want to explain to everyone what a smart contract is. It’s an old concept actually. Back in 1994, a cryptographer brought up the concept of smart contract. In a nutshell, a smart contract is a contract that can be enforced by computer. The term of the contract can be executed automatically by computer. Such contract is a smart contract. What does it mean by “term of the contract can be executed automatically by computer?” Regularly a contract that formed between two persons might be recorded using paper and signed by them. After the signing the contract is in effect. The terms of the contract are enforced by human being, and not by machine. Even if we digitized it using as a word document and digitally signed as a digital contract, it still needs to be enforced by human. So smart contract doesn’t only digitalize a contract, but also convert it into a program so that terms of the contract can be automatically executed by computers. So this is smart contract.\n\n2:40:54\n\nHere’s an example. An example from real life, as the concept has been around for a long time. The example is vending machine. It’s a real story, I was taking a train. When I was at train station, I was thirsty, so I want to buy a can of coke. The price was CNY4 for 1 can. So at the vending machine I insert coins. After 4 coins there’s no coke coming out. So I hit the refund button and it returned 2 coins. I was thinking it’s malfunctioning, and inserted those 2 coins back.\n\nStill no coke.\n\nThen after it only returned 1 coin after I hit the button. So I loss 3 coins, and was very unhappy about it. In the end I still got the coke, as I used WeChat to pay another CNY4. So I payed CNY7 for a can of coke. Later  I examined the vending machine and found a small paper stacked to it. It said: “Don’t use before 8am or after 6pm as someone might maliciously block the coin insert to disable the machine.” The vending machine is a smart contract. It will execute the order of purchasing drinks. So you insert coins, it calculate the prices and give you corresponding goods. I got the coke paying a price way over the listing price which means the contract is executed correctly. And the reason for that is some one maliciously blocked the coin insert. Which means the smart contract is maliciously modified. And that’s why a concept originate from 94 yet still not widely apply to everyday life, because the lack of a secure and reliable execution environment for the smart contract, as it can be easily modified by other people.\n\n2:42:53\n\nWhat is blockchain? Blockchain naturally has these properties: modify-prohibited, traceable, fair, open and transparent. So it can naturally provide a secure and reliable execution environment for the smart contract. So that’s why it’s good combination for smart contract and blockchain.\n\nWe cannot talk about blockchain and not talk about BitCoin. In bitcoin there’s a script system that can be considered the first occurrence of smart contract that based on blockchain. What’s the meaning of using blockchain as bitcoin’s smart contract?\n\nI have two charts here. On the left side is the execution engine for bitcoin, used for executing smart contract. It provide a simple instruction set such as constant, constant instructions and conditional branch, even some stack operation as it’s a stack-based virtual machine. Also has string manipulation , logical operator, arithmetic operator and especially cryptology instructions as it use such function quite a lot.\n\nWhat’s the purpose of all these? Its main purpose is account integrity. As we send some bitcoin from one address to another, we need others to verify the owner of the address, which running a piece of script. We run a smart contract, and it will verify the signing of the contract matches the public key or not. There are more complicated application such as multi-party signing. It may have a number of persons and need a part of them to sign a contract so they can transfer out a sum of money. That’s also in the bitcoin’s script system. The regular account and multi-party account are also known as standard contract or standard address. As their format are fixed. There are also non-standard address that can have customized authentication logic for your account. So that’s the smart contract in bitcoin.\n\n2:45:24\n\nBut the blockchain that evolved around smart contract is not bitcoin, it’s ethereum. Bitcoin and ethereum are similar blockchain system, but ethereum optimized and enhanced around smart contract. There are several points. 1st one is it upgraded the smart contract system to Turing-complete. Once it’s Turing-complete, I can use it to describe any logic. So the terms of the smart contract can be very diverse unlike bitcoin, which can only describe simple logic. That’s point one.\n\n2nd one is economic model, it introduced a new economic model. As it’s Turing-complete the logic can be anything, such as infinite loop, a program that will never end, and deploy it into the blockchain. It would be unrealistic for us to let it run on the blockchain. So when ethereum runs an instruction, it deduct a certain amount of ethereum. Once your balance reach 0, the program will terminate as you don’t have sufficient balance to keep it running. So that they introduced the new economic system to make sure that Turing-complete programs can be terminated. Also these part of fees will be awarded to miner to incentivize them to keep mining and maintain the network.\n\nThe last point. The ethereum provide a new feature to smart contract called persistent storage. It means the smart contract can save generated data to a storage area inside blockchain while running. It can be read while the program was running again. So that’s persistent storage. With this feature, one usage is data archiving. We can store some data in it. The 2nd usage is token issuing. We know that there are a lot of ICO project, and they are issuing their own token. And those tokens are implemented using persistent storage to store account and records. And that’s the system for token issuing.\n\n2:48:15\n\nSo here’s our NEO. NEO not only has this Turing-complete smart contract system. And Da already introduced other two important part: one is digital assets, the other is digital identity. Since Da explained those already, I will only talk about smart contract in depth and what’s different in NEO’s smart contract.\n\nIt can be summarized in 3 points. 1st is certainty, as smart contract has very strong certainty. 2nd is high performance. Its execution will be very fast. 3rd is extensibility.\n\nHere’s a comparison between NEO, ethereum and [fabric hyperledger](https://hyperledger-fabric.readthedocs.io/en/latest/)’s  certainty aspect. Let’s divide the certainty to 3 part. 1st is contract interoperability. Interoperability means smart contract A can call smart contract B’s function, and use B’s result as data. All 3 platform has this ability. It’s a very common ability, but there’s some nuance. NEO limited the interoperability to static calling. Here we need to differentiate static calling and dynamic calling. A dynamic call can choose the target during runtime. A static calling can only target the function that was decided during coding.\n\nThis is quite a big difference. If I treat A as program entry and B as a function, and in dynamic calling, A can choose to call B  or C or D. So if there’s a bug in B, I can upgrade it to C or D, so I don’t need to change A. It’s easy for the users as they only need to remember A. So it means smart contract can be hot patched and dynamically upgraded.\n\nBut there’s a downside, as upgrade is two edge sword. You may upgrade it to a better state or to a worse state. As a user, they can’t distinguish between what’s behind the scene when they using A, as it may call B or C to get better or worse result. And that’s a certainty on the user side. To prevent this, NEO remove dynamic calling during design stage, left only static calling. So when writing smart contract, you need to decide which contract to call. If you want to upgrade B, you will need to upgrade A too. That’s the 1st one.\n\n2:51:41\n\nThe 2nd one is system call. For the most time, when a program runs for one time, the result is such, and runs 100 times, it will still be such. But there are exceptions. Such as a program that generate random numbers. Maybe now I runs it, it shows 2, but I may get 5 later. Other people may get different result as the result is random. Another example, accessing system time. Right now the result could be 11:00, later it may give me 11:05. So the result will change every time. So if these uncertain system call can be called from smart contract, what will be the consequence? The blockchain is a distributed system, every node has different aspect.\n\nSo if every node runs a program and produce different result, they can no longer reach an agreement. This kind of inconsistency is not allowed. So to run a smart contract on a blockchain system, it must remove all the uncertain system calls. So it’s completely excluded from NEO. Ethereum also don’t have system calls. This is a downside of fabric, it asks the developers to restrain themselves from calling uncertain system calls. It can be done, but it’s hard to guarantee. So that’s a downside.\n\nThe 3rd point is ability to access internet resources. If we allow a smart contract to access internet resources, it can be very convenient. As it can directly access the today’s stock price and to influence the conditional branches in smart contract. It’s very convenient, but the problem is different node access even the same URL can get different result. A simple example is when searching a keyword using Google, even everyone use the same keyword, but due to different IP addresses, results can be different. So the ability to access internet would bring uncertainty to smart contract. So we didn’t make it into NEO during design process. Ethereum also don’t have it, but fabric, again, has this ability which introduce uncertainty. So that’s a comparison on uncertainty.\n\n2:54:38\n\nThe following is a comparison on performance. It’s still between these 3 platforms. The first thing is the deployment of the smart contracts. The performance is closely related to the execution environment.\n\nNEO has a in-house smart contract virtual machine called NEOVM, ethereum has their own called EVM. Fabric use a mature product called Docker. Docker is not a virtual machine, it’s a resource quarantine technology. It’s used as a smart contract execution environment in fabric.\n\nAgain we divided it into three categories. 1st one is contract deployment. It’s millisecond level on NEOVM and EVM, but it’s a painful process in Docker and would take seconds. 2nd is contract loading. Contract loading is to load a contract from the blockchain and execute it.\n\nIt’s also a simple process in NEOVM and EVM as would took milliseconds. It again will be difficult for Docker and would took seconds. It’s a very big gap in performance. The last one is where Docker shines, it’s smart contract execution. Since Docker’s programs are running on physical machines, so it’s very fast. NEOVM and EVM are interpreter so it’s slower compared to Docker. It’s also a very big gap.\n\nBut no big deal, we can use JIT, Just-in-time compilation to optimize the performance, to reach almost the efficiency of physical machines. Even without JIT optimization, it’s ok since the programs on the blockchain are really short, the deployment and loading speed is more important than execution speed. Blockchain programs are not like real world programs taking megabytes of spaces and heavily relying on computing power. The smart contract on blockchain are only used for simple conditional operation so the execution time will be really short. So the execution time are not that important.\n\n2:56:56\n\n3rd comparison is about extensibility. Still between aforementioned 3 platforms. 1st point is the concurrency of contact execution. Can smart contracts on blockchain be executed concurrently? It depends. As we know, the smart contracts can access a private persistent storage, it can read/write some data. If the contract can only read/write its own data, then there’s no problem, as long as each different contracts access different data, then they are not related so they can run concurrently.\n\n\nBut smart contracts can call each others and one contract can be run multiple times. So when they call each other, one contract might access my data, and I might access other contracts’ data. If different contract could access same data, then you will have to execute them serially in order, and not concurrently. If you want to execute contract concurrently on blockchain, what could you do? You can use sharding. We can use two methods.\n\nOne is static sharding, which will be used by ethereum. It will divide those smart contracts into different shard, for example 256 shards, and put contracts into those shards. Concurrency can be achieved between different shards. But within a shard, contracts can only be executed serially. And contracts cannot call each other when they are not in the same shard. So when there’s no dependency, they can be executed concurrently.\n\nSo this is static sharding method. It’s not bad, but the downside is you have to plan for the sharding beforehand, as it cannot be changed after it’s done. NEO use the second method: dynamic sharding. The reason we can use dynamic sharding is because we only allow static calling. Static calling means while we are writing the contract, we already know what contract we are going to call and what data we are going to access. This is decided beforehand, not in runtime. Thus we can calculate the call numbers before we run it so we can calculate the dependency and dynamically sharding at runtime. Since it’s sharding at runtime, it can be very flexible. So it can adjust sharding to the performance at runtime to keep the performance at peak condition. Docker doesn’t support this.\n\n2nd point is coupling, which also related the next point – portability. Coupling refers to the virtual machine’s dependency with blockchain node. Ethereum didn’t handle this very well, but docker excels, as docker doesn’t relate to blockchain technology. While fabric choose it as execution environment, it has very low coupling with blockchain system. Almost none coupling. You can port it to other blockchain or other non-blockchain product. But that’s not the case for EVM, as EVM coupled too many blockchain related instructions. For instance, it use an instruction for calculating contract’s consumption, another instruction for creating a new contract, yet another instruction for contract accessing data. That’s a very high level of coupling with blockchain, you can’t port the code to other system.\n\n3:01:20\n\nI just introduced NEO’s smart contract and its features. Now I will explain how can we develop contracts for it.\n\nIt’s very convenient. Visual Studio, and IDE. We can develop smart contract using VS. Since we just rebrand to NEO from Antshares, so someplace we still uses old branding. You can find our plugin in Visual Studio’s plugin store using keyword “anshares,” it can be used to write NEO smart contracts.\n\nOnce you download and installed it, you will find a smart contract template when creating new project. Once you created project using the template, it will show you are simple program which is a smart contract. We can see it only has one line of code, it will call a function named “stoage.put” which put data into your contract’s storage area. The data is store in key-value pair. Here the key is “hello” and the value is “world”. So it stores hello world into the storage area. You can delete this code from the template and code your own logic in C# or other languages.\n\nWe used C# in this example, but we are supporting more language in the future. In .net, we are supporting all the languages, C#, VB, F# are already fully supported. 2nd is Java, Java is one of the language that has the most developers, it’s also fully supported. So you can use Java to code NEO smart contracts. 3rd is Kotlin, which just recently recommend by Google to code for Android apps. We used to use Java, but now Google officially recommend using Kotlin. It’s also fully supported.\n\nThe uppers ones are all now fully supported. The lower ones are going to be supported in the future. 1st one is go, we are developing compiler for it so that you can write smart contract using go. JavaScript and python. And we are going to support more high level programming languages.\n\n3:04:09\n\nOK, here’s another set of comparison. A comparison between development environment. We just announced our support for those mainstream languages. The first row is high level languages.\n\nFabric is best in this area, since it’s using Docker, so it can support any language as long as you have a compiler for it. We support those mainstream languages that we announced. And we believe that we can cover 99% of developers by supporting those languages. I think that’s not bad.\n\nEthereum are not looking good in this area as it only support 4 language to write smart contracts. Also those 4 languages are created by them so quite a steep learning curve. And the most common one, solidity, is quite hard to learn. Community volume, as the total numbers of the developers. There are over tens  millions of developers worldwide, since we are covering 99% of them, they can provide smart contract in our ecosystem. But for ethereum, solidity developers maybe in thousands, and that’s a small community volume.\n\nThe last one is the IDE, which indicate the easiness of the development. Since NEO is very portable, so we can easily integrate it with IDEs and use IDEs’ debugger to debug your code. Fabric has the same abilities. But Ethereum lacks support in this area.\n\n3:05:50\n\nHere’s a architecture map for NEOVM smart contract system. As we can see, on the upper left side, those are language compilers. They allow you to use familiar language to write smart contracts. After compilation, it will generate a program that can be run in the NEOVM. The VM provide some simple instructions. The VM which represented in the green box provide several instructions, one of them is quite interesting, called “interoperation service layer” invoke instruction.\n\nInteroperation service layer is represent in the blue box on the right side. If you consider the green box(VM) as a CPU, then the blue box(ISL) can be viewed as a system bus which allows you to connect to different peripherals. We know that CPU doesn’t have too much functions, it can do some arithmetic and logic computations, but doesn’t connect to the internet. If you need a program in CPU to access the internet, you will need a network card. If you need to store some data, but the CPU cannot  store data in itself, so you will need to connect a hard drive, then CPU can call functions in hard drive to store data. So the blue box as a system bus can connect to different services so that smart contract have different feature and ability.\n\nLet’s focus on the text list on the right side. So our whole smart contract system contains development tools including IDE, compilers and development frameworks. Below is the execution environment, such as runtime, stack and interoperation service layer. So that’s the whole architecture.\n\n3:08:22\n\nHere’s another comparison. This one is on VMs. 1st let’s compare instruction set. NEOVM provides a simple instruction set, including arithmetic and logic operations, conditional branches and cryptology instructions. EVM provides a specialized instruction sets. It provides not only those NEOVM has, but also those I mentioned earlier, like the ones that’s coupled with blockchain. Dockers rely on the low level hardware to provide instruction set. For example if it’s running on an X86 computer, then it provides X86 instruction sets.\n\nWhen it’s on ARM platform, then it’s ARM instruction set. The problem is it requires all the node on the blockchain to be one single architecture. You can’t have some x86 ones and some ARM ones, the smart contracts won’t work on this network. But Fabric can get around this because it’s aiming at alliance chains, in an alliance chain you can require alliance members to using same architecture for nodes and server. This is not possible in public chains, so they must have consistency in architecture.\n\n3:09:48\n\n2nd one is service. NEOVM provides are service layer, and different services can be plugged in. Docker also provide a similar mechanism, which is to use gRPC as an API. It allows smart contract to communicate with gRPC to access API at runtime. But EVM are providing services using instruction sets, and this will obstruct next point, which is function scalability. When I want to extend functions, it’s quite easy in NEOVM, you can just register a new service on interoperation service layer. Docker is the same, just add an API to gRPC. But if you want to add to EVM then it’s complicated. Think it as a computer, you want to add a function, just plug in an USB, but in EVM you must break down the computer, find the IC and solder some new chips on it and put it all back. That’s a lot of work, so it’s very hard to extend EVM’s functions.\n\n3:11:05\n\nWhat does NEO provides on Interoperation service layer? There’s 4 services. 1st one is blockchain ledger, this service allows smart contracts access all the blocks, transaction, accounts and their field during runtime. It can read any user’s balance and assets.  2nd one is digital assets, it only allow contracts at runtime to access and manage digital assets. 3rd one is smart contracts. You may wonder why provide a smart contract service to a smart contract? Our smart contracts can dynamically create smart contract, migrate and upgrade current contracts  and even destroy the contracts. 4th one is persistency, this is very similar to Ethereum, which allows contract to read and write data, including deleting data. But there’s also some minor difference as I will talk about it later.\n\n3:12:33\n\nLet’s talk about digital assets first, yet another comparison. We will exclude Fabric, just NEO and Ethereum on digital assets. We know Ethereum has a lot of ICO projects, every projects will issue their own token. This is a very common feature, the Ethereum supports it well, NEO also supports it , because it can store contract data. But the second point, NEO also provides digital identities, which is not present in Ethereum. The reason is not they don’t want to, but it’s against their design goal. We know that Ethereum and Bitcoin are designed to have anonymous ,anti-censorship and decentralization. So it’s not necessary for them to provide a digital identity to expose the person behind it. NEO provides such feature, through a simple method – digital certificate, using existing KPI system, which we will have some upgrades for it.\n\n3:13:43\n\nWhen you have digital identities, we can do assets digitalization. Da said in his speech, assets digitalization is to map some assets from real physical world to blockchain. What’s the essence of this? The essence is credit.\n\nFor instance, bank is a strong credit organization, you deposit some money into the bank, they save it on their servers or accounting systems. This deposit is actually digital assets issued by bank. It’s different from the paper bill you deposited. Why is that? Let’s say the bank is closed or bankrupted, is there any use of your deposit? It’s just some data in the account. Assets digitalization is some credible entity using their own credit as warrant, make a promise about one to one exchange of digital assets and real life assets.\n\nIf this digital assets are recorded on blockchain, then it’s assets digitalization on blockchain. Since the essence is credit, it means identity. Only identity can provides credibility, anonymity is not creditable. We can only digitalize assets after we have digital identity. Since we have digital identity, we can support assets digitalization. Ethereum cannot support this, it can only issue tokens, which are generated on blockchain.\n\n3:15:25\n\nThen let’s compare persistent storage, again with Ethereum. 1st one is authentication of storage, that’s every contract has permission to access their own private storage area. Is there any way for other contracts to access my storage area? It’s also allowed. Ethereum has a simple solution, it provides two instructions, 1st one is named “call” , 2nd one is named “call code”. To use CALL, I can call a contract, and the contract in its context, can access its own storage area, when the execution returns, I continue my execution. The other one CALL CODE allows me to load a contract and load its code into my context and can access my storage area. So that’s how ethereum allows data access between contracts, but it’s not flexible enough. NEO provide a flexible mechanism: every contract can gain the read permission of their own storage area, and grant it to another contract called by it, like authorizing other contract to access its own storage area. The called contract can access its own storage area, and the storage area you as a caller granted it. Since the contracts are in a calling chain, it can access multiple contracts, every one on the calling chains can access others’ storage area as long as they have been granted permissions. It’s very flexible.\n\n3:17:22\n\n2nd one is contract migrations. In Ethereum, if a contract has a bug, and you want to modify it, you must create a new contract, but the data cannot be migrated. You have to let user to manually send the assets into the new contract, which is very difficult. But in NEO we provide a very simple contract migration feature, a contract can create a sub contract during runtime, at the same time move all the data to the new contract. This is contract migrations.\n\n3:17:59\n\nLast one is about the size of the storage. In Ethereum the data has a strict length limit of 256bit, which is 32 bytes, cannot be longer or shorter. If you want to save 1KB of data, you have to divide it into several 32 bytes, then save in different data records, very inconvenient. In NEO we don’t limit the length of data, but we charge by the length of data. The bigger your data, the more it costs. But it doesn’t have length limit, which is very convenient.\n\n3:18:37\n\nAt last I have some sample contracts, which I already uploaded to GitHub. There are many samples, I will introduce 3 of them. 1st one is lock account, 2nd one is decentralized domain system, last one is token issuing.\n\nThis is the sample code from our GitHub. Let’s see the first one, lock account. This contract is very simple, 3 lines of code in total. Let me describe its usage. Usually for an account, its permission is very simple, I use a private key to sign a transaction, then send the transaction, others will verify my signature, once the verification passed then I have the ownership of this account and can freely use the money in this account. But in some situation, I may want to lock my account for a period of time, so that before the time reaches, no one can use the money inside my account. To achieve this, I need to add some code the this basic account. Let’s check the code.\n\nFirst line, blockchain.getheight means when I call this function, it will return the height of the whole blockchain. The Current height is the latest blockchain’s height. Once I got the data, I pass the height to getHeader, and save the header of the blockchain to header variable. There are some properties in block header, one of them is time stamp, the time that block was generated. NEO will generate 1 block in every 15 seconds, so the timestamp in the block header may have some margin of error, but it will be less than 15 seconds so it’s minor.\n\nThen we can use this time, to compare it to a time that was pre-determined by us, if the current time has not reach the set time, the account is locked, so we  return false to prohibit account operations. If the time has already passed, we can validate the signature and verify this person is the owner or not. If verification passes, then he can operate on this account. Very simple logic.\n\n3:22:35\n\nLet’s see the second sample. This one is a bit complicated. We can see it’s 5 functions. One is main, it’s a decentralized domain name management system. To manage, it has a function, which will take some parameters, the first one is operation, what I want to do, like register a domain name or transfer one or delete one.\n\nThe 1st is query, it will verify the current caller of the smart contract need to check a domain name, it will execute the query function. Query is easy, it accepts a parameter named domain name, the function will take the name to the storage are and access its record, then return the data to the caller.\n\nThe 2nd is register. When registering, it will take 3 parameters, the first one is the domain name, second one is the owner, third one is the signature. The logic is simple too, first I will need to verify the signature, to check the caller is actually the one called, and will return false when verification failed. When verification passed, to check if the name is already registered. So I will try access the storage area and find the record, if record is found then it’s already registered and will return false. If there’s no record then you can register and I will write the new owner info into the storage area and return true to show it’s successful. That’s domain registration.\n\nThe 3rd is transfer. The 4 parameters are domain name, signature of owner, and the recipient, and the signature of recipient. The logic is we need to verify signatures, to see the recipient is willing to accept this domain name, if the recipient is unwilling then return false. The second is to read the domain name record, if cannot be found then it’s an unregistered name, return false. Once the record is found we need to verify the caller is the owner via signature, if not return false. When everything passed means we can transfer the name, and write the new owner’s information into the storage area then return true.\n\nThe last one is delete. The logic is similar to last one, which we need to verify a signature, only the domain name owner can delete their names. That’s after verifying it’s registered, since we cannot verify signature without domain record. Every thing’s passed then we delete the record and return true.\n\nSo this is a simple and basic decentralized blockchain domain name management system.\n\n3:26:53\n\nThe last one is token issuing, and I don’t have time for it now, it’s very easy to understand though. Because we already save a set of record for domain name owners, we can do registering and transferring. If we change the domain name to a token, it’s the same principle. So it will be easy for you to write a token transfer and issuing system following the domain system.\n\n--\n\nIf you made it this far and these translations are useful to you please comment/share/tweet/upvote/consider donating so that we can spread the expense as a community. The freelancers I found are good but they weren't cheap! If you're a native speaker and can translate future announcements I'd encourage you to do so and the rest of us will happily donate!\n\nI'll publish an accounting for any donations sent and only use them to offset translation services.\n\nTranslations donation address : 0xd42b38Fa09665747FAD4DA1F33a0777E340F1d10",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"ethereum\",\"antshares\",\"neo\",\"blockchain\"],\"image\":[\"https://steemitimages.com/DQmTD1HKn45ZzQb4VqLN8iV8NYfiuFfKx352nHsEor6G74K/neo-cto-preso.jpg\"],\"links\":[\"https://steemit.com/cryptocurrency/@rboyd/translation-of-antshares-brand-strategy-announcement-pt-1\",\"https://hyperledger-fabric.readthedocs.io/en/latest/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-2",
      "title": "Translation of Antshares Brand Strategy Announcement (pt. 2)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T11:37:33",
  "trx_id": "18b5e05f30a9f809479caf2e0a251129825410cb",
  "trx_in_block": 23,
  "virtual_op": 0
}
2017/06/24 10:50:39
authoryongkaijing
permlinkneo-antshares-latest-info-24th-june-2017
voterrboyd
weight10000 (100.00%)
Transaction InfoBlock #13098909/Trx 0697e60568f852cd41270733f1795aad348082a7
View Raw JSON Data
{
  "block": 13098909,
  "op": [
    "vote",
    {
      "author": "yongkaijing",
      "permlink": "neo-antshares-latest-info-24th-june-2017",
      "voter": "rboyd",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T10:50:39",
  "trx_id": "0697e60568f852cd41270733f1795aad348082a7",
  "trx_in_block": 14,
  "virtual_op": 0
}
2017/06/24 10:50:30
authorpolotrader9000
permlinkeos-the-new-better-ethereum-antshares-aka-the-chinese-ethereum-neo
voterrboyd
weight10000 (100.00%)
Transaction InfoBlock #13098906/Trx b57fc1105846809fd5984425ef4b809740d0b7cd
View Raw JSON Data
{
  "block": 13098906,
  "op": [
    "vote",
    {
      "author": "polotrader9000",
      "permlink": "eos-the-new-better-ethereum-antshares-aka-the-chinese-ethereum-neo",
      "voter": "rboyd",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T10:50:30",
  "trx_id": "b57fc1105846809fd5984425ef4b809740d0b7cd",
  "trx_in_block": 0,
  "virtual_op": 0
}
2017/06/24 10:50:21
authorlazybits
permlinkantshares-rebranded-to-neo
voterrboyd
weight10000 (100.00%)
Transaction InfoBlock #13098903/Trx e9399d23643e3a91d740ccf0b893afd1152f1340
View Raw JSON Data
{
  "block": 13098903,
  "op": [
    "vote",
    {
      "author": "lazybits",
      "permlink": "antshares-rebranded-to-neo",
      "voter": "rboyd",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T10:50:21",
  "trx_id": "e9399d23643e3a91d740ccf0b893afd1152f1340",
  "trx_in_block": 11,
  "virtual_op": 0
}
2017/06/24 10:50:03
authorwestminsterrealm
permlinkis-neo-the-new-eth
voterrboyd
weight10000 (100.00%)
Transaction InfoBlock #13098897/Trx 36cc4fa9560da19236f5e72e20adae9964f572e1
View Raw JSON Data
{
  "block": 13098897,
  "op": [
    "vote",
    {
      "author": "westminsterrealm",
      "permlink": "is-neo-the-new-eth",
      "voter": "rboyd",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T10:50:03",
  "trx_id": "36cc4fa9560da19236f5e72e20adae9964f572e1",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/06/24 01:45:12
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterkernelpanic
weight10000 (100.00%)
Transaction InfoBlock #13088005/Trx 0507dd8d6a6daa86426c050e47d6148ec2ea01c5
View Raw JSON Data
{
  "block": 13088005,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "kernelpanic",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T01:45:12",
  "trx_id": "0507dd8d6a6daa86426c050e47d6148ec2ea01c5",
  "trx_in_block": 28,
  "virtual_op": 0
}
2017/06/24 00:38:36
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterrsafier
weight10000 (100.00%)
Transaction InfoBlock #13086673/Trx 9f5ef02e4facdc7987d062df3c56225f9ec1d07f
View Raw JSON Data
{
  "block": 13086673,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "rsafier",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-24T00:38:36",
  "trx_id": "9f5ef02e4facdc7987d062df3c56225f9ec1d07f",
  "trx_in_block": 6,
  "virtual_op": 0
}
2017/06/23 19:13:09
authorrboyd
permlinktranslation-of-antshares-brand-strategy-announcement-pt-1
voterjohnnypiracha
weight10000 (100.00%)
Transaction InfoBlock #13080166/Trx 8329d983b66e144580de06acd6a304a0ea3fc9ff
View Raw JSON Data
{
  "block": 13080166,
  "op": [
    "vote",
    {
      "author": "rboyd",
      "permlink": "translation-of-antshares-brand-strategy-announcement-pt-1",
      "voter": "johnnypiracha",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-23T19:13:09",
  "trx_id": "8329d983b66e144580de06acd6a304a0ea3fc9ff",
  "trx_in_block": 30,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"profile_image":"https://pbs.twimg.com/profile_images/644679849248866305/0zUMNQsP_400x400.png","name":"Bobby Boyd","about":"how we let these bits define us"}
JSON METADATA
profile{"profile_image":"https://pbs.twimg.com/profile_images/644679849248866305/0zUMNQsP_400x400.png","name":"Bobby Boyd","about":"how we let these bits define us"}
{
  "posting_json_metadata": {
    "profile": {
      "profile_image": "https://pbs.twimg.com/profile_images/644679849248866305/0zUMNQsP_400x400.png",
      "name": "Bobby Boyd",
      "about": "how we let these bits define us"
    }
  },
  "json_metadata": {
    "profile": {
      "profile_image": "https://pbs.twimg.com/profile_images/644679849248866305/0zUMNQsP_400x400.png",
      "name": "Bobby Boyd",
      "about": "how we let these bits define us"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM5fVNEur4ZocBK2nfthEbptkNQ96soeoaFmmQqYSMfPsGkLADnM1/1
Active
Single Signature
Public Keys
STM54rHwnLJueJkcqbQMVgRJD2dapmPceG7tJBg1Q733uigyCphLg1/1
Posting
Single Signature
Public Keys
STM5hse7iVDkJcWxtbJniKmWchwf3HkyQk8oBu2hRnVN8jCJbEorU1/1
Memo
STM5BS4gU4MtBMWpFEfR9H4c9GfXTyqeqTMH712GwSYSKfqkHdGAm
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5fVNEur4ZocBK2nfthEbptkNQ96soeoaFmmQqYSMfPsGkLADnM",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM54rHwnLJueJkcqbQMVgRJD2dapmPceG7tJBg1Q733uigyCphLg",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5hse7iVDkJcWxtbJniKmWchwf3HkyQk8oBu2hRnVN8jCJbEorU",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM5BS4gU4MtBMWpFEfR9H4c9GfXTyqeqTMH712GwSYSKfqkHdGAm"
}

Witness Votes

0 / 30
No active witness votes.
[]