VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS62.15%
Net Worth
3.024USD
STEEM
0.196STEEM
SBD
6.262SBD
Effective Power
5.007SP
├── Own SP
0.125SP
└── Incoming DelegationsDeleg
+4.882SP
Detailed Balance
| STEEM | ||
| balance | 0.000STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.196STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.125SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 4.882SP | SP |
| Effective Power | 5.007SP | SP |
| Reward SP (pending) | 2.808SP | SP |
| SBD | ||
| sbd_balance | 0.000SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 6.262SBD | SBD |
{
"balance": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.196 STEEM",
"vesting_shares": "203.863379 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "7939.796427 VESTS",
"sbd_balance": "0.000 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "6.262 SBD",
"conversions": []
}Account Info
| name | eosbeijing |
| id | 930899 |
| rank | 1,183,057 |
| reputation | 70280411007 |
| created | 2018-04-11T00:05:33 |
| recovery_account | steem |
| proxy | None |
| post_count | 12 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2018-08-18T11:18:36 |
| last_root_post | 2018-08-18T11:18:36 |
| last_vote_time | 2018-05-30T01:53:24 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.000 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.000 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 203.863379 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 7939.796427 VESTS |
| reward_vesting_balance | 5708.730716 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 2018-05-06T11:13:27 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 1970-01-01T00:00:00 |
| savings_sbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"id": 930899,
"name": "eosbeijing",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6d1jkKBdHYoYrLe8Edicqs4RJo9rFBiXcSZtEqTLfESGSgV4B9",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6GWPargBqk6Z5n4WPKvimhZQTgGQW3bFM3UMau3kBxsSAeuwjD",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8L3UC5aSSjrTtXdKvs3mQurhYuYNPaoA1wVVWc1tQno11AquA9",
1
]
]
},
"memo_key": "STM61GrXoyYFbPBmrtQt2GWwiMKsvPAtyUZMB3Sj5XEYcfydhtgYD",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://steemitimages.com/DQmQxj4V4w1RVj8D28Twvesj5z3YT3HxqjsLXJhL9H2VNnV/%E6%97%A0%E6%A0%87%E9%A2%98.jpg\"}}",
"posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://steemitimages.com/DQmQxj4V4w1RVj8D28Twvesj5z3YT3HxqjsLXJhL9H2VNnV/%E6%97%A0%E6%A0%87%E9%A2%98.jpg\"}}",
"proxy": "",
"last_owner_update": "1970-01-01T00:00:00",
"last_account_update": "2018-05-06T11:13:27",
"created": "2018-04-11T00:05:33",
"mined": false,
"recovery_account": "steem",
"last_account_recovery": "1970-01-01T00:00:00",
"reset_account": "null",
"comment_count": 0,
"lifetime_vote_count": 0,
"post_count": 12,
"can_vote": true,
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779062475
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779062475
},
"voting_power": 0,
"balance": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"sbd_balance": "0.000 SBD",
"sbd_seconds": "0",
"sbd_seconds_last_update": "1970-01-01T00:00:00",
"sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"reward_sbd_balance": "6.262 SBD",
"reward_steem_balance": "0.196 STEEM",
"reward_vesting_balance": "5708.730716 VESTS",
"reward_vesting_steem": "2.808 STEEM",
"vesting_shares": "203.863379 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "7939.796427 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"withdrawn": 0,
"to_withdraw": 0,
"withdraw_routes": 0,
"curation_rewards": 0,
"posting_rewards": 5616,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"witnesses_voted_for": 0,
"last_post": "2018-08-18T11:18:36",
"last_root_post": "2018-08-18T11:18:36",
"last_vote_time": "2018-05-30T01:53:24",
"post_bandwidth": 0,
"pending_claimed_accounts": 0,
"vesting_balance": "0.000 STEEM",
"reputation": "70280411007",
"transfer_history": [],
"market_history": [],
"post_history": [],
"vote_history": [],
"other_history": [],
"witness_votes": [],
"tags_usage": [],
"guest_bloggers": [],
"rank": 1183057
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
steemdelegated 4.882 SP to @eosbeijing2026/05/18 00:01:15
steemdelegated 4.882 SP to @eosbeijing
2026/05/18 00:01:15
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 7939.796427 VESTS |
| Transaction Info | Block #106143171/Trx a4dd08ec57c1c647d1378a1231ab0cc6aad6d02a |
View Raw JSON Data
{
"trx_id": "a4dd08ec57c1c647d1378a1231ab0cc6aad6d02a",
"block": 106143171,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-05-18T00:01:15",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "7939.796427 VESTS"
}
]
}steemdelegated 3.214 SP to @eosbeijing2026/05/12 02:53:42
steemdelegated 3.214 SP to @eosbeijing
2026/05/12 02:53:42
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 5227.586022 VESTS |
| Transaction Info | Block #105974577/Trx 2bd8829d665264e531aafcb02eee4543af885bd3 |
View Raw JSON Data
{
"trx_id": "2bd8829d665264e531aafcb02eee4543af885bd3",
"block": 105974577,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-05-12T02:53:42",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "5227.586022 VESTS"
}
]
}steemdelegated 4.890 SP to @eosbeijing2026/04/25 23:22:30
steemdelegated 4.890 SP to @eosbeijing
2026/04/25 23:22:30
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 7952.312183 VESTS |
| Transaction Info | Block #105510828/Trx 8913f87dce970371c0fe63ab8ecdf5bbcaab1d7d |
View Raw JSON Data
{
"trx_id": "8913f87dce970371c0fe63ab8ecdf5bbcaab1d7d",
"block": 105510828,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-04-25T23:22:30",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "7952.312183 VESTS"
}
]
}steemdelegated 3.240 SP to @eosbeijing2026/01/23 07:10:09
steemdelegated 3.240 SP to @eosbeijing
2026/01/23 07:10:09
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 5269.132841 VESTS |
| Transaction Info | Block #102851051/Trx 774654092b7fed996046d037716a0c118afa5128 |
View Raw JSON Data
{
"trx_id": "774654092b7fed996046d037716a0c118afa5128",
"block": 102851051,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-01-23T07:10:09",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "5269.132841 VESTS"
}
]
}steemdelegated 3.341 SP to @eosbeijing2024/12/17 02:29:48
steemdelegated 3.341 SP to @eosbeijing
2024/12/17 02:29:48
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 5433.352038 VESTS |
| Transaction Info | Block #91297472/Trx 6042c8c758bcf98aeee0ca5c61f0532c3d78c38e |
View Raw JSON Data
{
"trx_id": "6042c8c758bcf98aeee0ca5c61f0532c3d78c38e",
"block": 91297472,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2024-12-17T02:29:48",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "5433.352038 VESTS"
}
]
}steemdelegated 3.445 SP to @eosbeijing2023/11/13 18:12:21
steemdelegated 3.445 SP to @eosbeijing
2023/11/13 18:12:21
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 5602.485570 VESTS |
| Transaction Info | Block #79851670/Trx f0c55b8e62495ddc42e45ff79d1f2abf6b8e7290 |
View Raw JSON Data
{
"trx_id": "f0c55b8e62495ddc42e45ff79d1f2abf6b8e7290",
"block": 79851670,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-11-13T18:12:21",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "5602.485570 VESTS"
}
]
}steemdelegated 5.251 SP to @eosbeijing2023/09/21 21:33:06
steemdelegated 5.251 SP to @eosbeijing
2023/09/21 21:33:06
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 8539.764356 VESTS |
| Transaction Info | Block #78347494/Trx 345c6bbfa99c320cf2440eb3186a2a9d6d751153 |
View Raw JSON Data
{
"trx_id": "345c6bbfa99c320cf2440eb3186a2a9d6d751153",
"block": 78347494,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-09-21T21:33:06",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "8539.764356 VESTS"
}
]
}steemdelegated 5.387 SP to @eosbeijing2022/11/03 11:23:18
steemdelegated 5.387 SP to @eosbeijing
2022/11/03 11:23:18
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 8761.445794 VESTS |
| Transaction Info | Block #69112885/Trx 34137fc9ee28e1e47f1868f9b34f0fd1dfc46537 |
View Raw JSON Data
{
"trx_id": "34137fc9ee28e1e47f1868f9b34f0fd1dfc46537",
"block": 69112885,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-11-03T11:23:18",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "8761.445794 VESTS"
}
]
}steemdelegated 5.523 SP to @eosbeijing2022/01/17 10:40:39
steemdelegated 5.523 SP to @eosbeijing
2022/01/17 10:40:39
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 8981.979025 VESTS |
| Transaction Info | Block #60809079/Trx 2f7dfa18e267587245ed94010078c2ed05ce675b |
View Raw JSON Data
{
"trx_id": "2f7dfa18e267587245ed94010078c2ed05ce675b",
"block": 60809079,
"trx_in_block": 36,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-01-17T10:40:39",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "8981.979025 VESTS"
}
]
}steemdelegated 5.636 SP to @eosbeijing2021/06/14 00:36:33
steemdelegated 5.636 SP to @eosbeijing
2021/06/14 00:36:33
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 9165.747683 VESTS |
| Transaction Info | Block #54607480/Trx 04a15380442e5e9314d5f577eba71d2ee27d4533 |
View Raw JSON Data
{
"trx_id": "04a15380442e5e9314d5f577eba71d2ee27d4533",
"block": 54607480,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-06-14T00:36:33",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "9165.747683 VESTS"
}
]
}steemdelegated 5.751 SP to @eosbeijing2020/12/11 10:55:45
steemdelegated 5.751 SP to @eosbeijing
2020/12/11 10:55:45
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 9353.169657 VESTS |
| Transaction Info | Block #49354948/Trx 62837253a40340948636a43a49847311cfa5f3c4 |
View Raw JSON Data
{
"trx_id": "62837253a40340948636a43a49847311cfa5f3c4",
"block": 49354948,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-11T10:55:45",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "9353.169657 VESTS"
}
]
}steemdelegated 1.176 SP to @eosbeijing2020/12/06 04:33:06
steemdelegated 1.176 SP to @eosbeijing
2020/12/06 04:33:06
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 1912.543513 VESTS |
| Transaction Info | Block #49206515/Trx 93469b172fb28e9418aca1e3e25841f2502f06cb |
View Raw JSON Data
{
"trx_id": "93469b172fb28e9418aca1e3e25841f2502f06cb",
"block": 49206515,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-06T04:33:06",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "1912.543513 VESTS"
}
]
}steemdelegated 5.755 SP to @eosbeijing2020/12/05 14:34:00
steemdelegated 5.755 SP to @eosbeijing
2020/12/05 14:34:00
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 9359.377511 VESTS |
| Transaction Info | Block #49190048/Trx 0f40cf2f5118283eba85886186710cf4489df948 |
View Raw JSON Data
{
"trx_id": "0f40cf2f5118283eba85886186710cf4489df948",
"block": 49190048,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-05T14:34:00",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "9359.377511 VESTS"
}
]
}steemdelegated 1.181 SP to @eosbeijing2020/11/02 15:09:45
steemdelegated 1.181 SP to @eosbeijing
2020/11/02 15:09:45
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #48257237/Trx 793c58b5574e3b6d82dfc9058111634ea3bc550c |
View Raw JSON Data
{
"trx_id": "793c58b5574e3b6d82dfc9058111634ea3bc550c",
"block": 48257237,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-11-02T15:09:45",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "1920.017158 VESTS"
}
]
}steemdelegated 5.880 SP to @eosbeijing2020/05/09 05:30:09
steemdelegated 5.880 SP to @eosbeijing
2020/05/09 05:30:09
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 9562.182870 VESTS |
| Transaction Info | Block #43216758/Trx f025da4974de373e09b948b69863dd1c42823b33 |
View Raw JSON Data
{
"trx_id": "f025da4974de373e09b948b69863dd1c42823b33",
"block": 43216758,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-09T05:30:09",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "9562.182870 VESTS"
}
]
}steemdelegated 1.201 SP to @eosbeijing2020/05/08 09:04:15
steemdelegated 1.201 SP to @eosbeijing
2020/05/08 09:04:15
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #43192816/Trx 2ada693c742bc25346c5d502b97fc2a3410faa05 |
View Raw JSON Data
{
"trx_id": "2ada693c742bc25346c5d502b97fc2a3410faa05",
"block": 43192816,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-08T09:04:15",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "1953.311140 VESTS"
}
]
}steemdelegated 5.945 SP to @eosbeijing2019/11/01 07:33:48
steemdelegated 5.945 SP to @eosbeijing
2019/11/01 07:33:48
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 9668.581953 VESTS |
| Transaction Info | Block #37787858/Trx 2e05ed9a903226a7c96698666782a3b36ad96f49 |
View Raw JSON Data
{
"trx_id": "2e05ed9a903226a7c96698666782a3b36ad96f49",
"block": 37787858,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-11-01T07:33:48",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "9668.581953 VESTS"
}
]
}2019/04/11 01:18:54
2019/04/11 01:18:54
| parent author | eosbeijing |
| parent permlink | eos-beijing-supports-the-eos-alliance |
| author | steemitboard |
| permlink | steemitboard-notify-eosbeijing-20190411t011853000z |
| title | |
| body | Congratulations @eosbeijing! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@eosbeijing/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@eosbeijing) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=eosbeijing)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/the-steem-blockchain-survived-its-first-virus-plague"><img src="https://steemitimages.com/64x128/https://steemitimages.com/0x0/"></a></td><td><a href="https://steemit.com/steemitboard/@steemitboard/the-steem-blockchain-survived-its-first-virus-plague">The Steem blockchain survived its first virus plague!</a></td></tr></table> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| Transaction Info | Block #31938099/Trx 624f8aa169d46ef5018f918e14e73b63c68e7092 |
View Raw JSON Data
{
"trx_id": "624f8aa169d46ef5018f918e14e73b63c68e7092",
"block": 31938099,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-11T01:18:54",
"op": [
"comment",
{
"parent_author": "eosbeijing",
"parent_permlink": "eos-beijing-supports-the-eos-alliance",
"author": "steemitboard",
"permlink": "steemitboard-notify-eosbeijing-20190411t011853000z",
"title": "",
"body": "Congratulations @eosbeijing! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@eosbeijing/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@eosbeijing) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=eosbeijing)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemitboard/@steemitboard/the-steem-blockchain-survived-its-first-virus-plague\"><img src=\"https://steemitimages.com/64x128/https://steemitimages.com/0x0/\"></a></td><td><a href=\"https://steemit.com/steemitboard/@steemitboard/the-steem-blockchain-survived-its-first-virus-plague\">The Steem blockchain survived its first virus plague!</a></td></tr></table>\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\"]}"
}
]
}viceversasupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains2019/03/29 12:37:54
viceversasupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains
2019/03/29 12:37:54
| voter | viceversas |
| author | eosbeijing |
| permlink | shadowzone-private-smart-contracts-on-public-blockchains |
| weight | 10000 (100.00%) |
| Transaction Info | Block #31577883/Trx eb5d7d36014f4e0323e7cb167ece2d92c26e61c3 |
View Raw JSON Data
{
"trx_id": "eb5d7d36014f4e0323e7cb167ece2d92c26e61c3",
"block": 31577883,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-03-29T12:37:54",
"op": [
"vote",
{
"voter": "viceversas",
"author": "eosbeijing",
"permlink": "shadowzone-private-smart-contracts-on-public-blockchains",
"weight": 10000
}
]
}steemdelegated 6.067 SP to @eosbeijing2018/11/26 17:25:18
steemdelegated 6.067 SP to @eosbeijing
2018/11/26 17:25:18
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 9866.057330 VESTS |
| Transaction Info | Block #28043847/Trx f07930f83ea5459891661874e549c0f8e31e1b95 |
View Raw JSON Data
{
"trx_id": "f07930f83ea5459891661874e549c0f8e31e1b95",
"block": 28043847,
"trx_in_block": 25,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-11-26T17:25:18",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "9866.057330 VESTS"
}
]
}eosunionupvoted (100.00%) @eosbeijing / eos-beijing-supports-the-eos-alliance2018/08/20 04:08:36
eosunionupvoted (100.00%) @eosbeijing / eos-beijing-supports-the-eos-alliance
2018/08/20 04:08:36
| voter | eosunion |
| author | eosbeijing |
| permlink | eos-beijing-supports-the-eos-alliance |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25223033/Trx d66928a7fa62a77cd89e375e8b8014233f15b284 |
View Raw JSON Data
{
"trx_id": "d66928a7fa62a77cd89e375e8b8014233f15b284",
"block": 25223033,
"trx_in_block": 9,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-20T04:08:36",
"op": [
"vote",
{
"voter": "eosunion",
"author": "eosbeijing",
"permlink": "eos-beijing-supports-the-eos-alliance",
"weight": 10000
}
]
}ppitonakupvoted (100.00%) @eosbeijing / eos-beijing-supports-the-eos-alliance2018/08/18 21:18:48
ppitonakupvoted (100.00%) @eosbeijing / eos-beijing-supports-the-eos-alliance
2018/08/18 21:18:48
| voter | ppitonak |
| author | eosbeijing |
| permlink | eos-beijing-supports-the-eos-alliance |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25186052/Trx efb4a3228814cadfdc2283abd5cf76062cacf4a2 |
View Raw JSON Data
{
"trx_id": "efb4a3228814cadfdc2283abd5cf76062cacf4a2",
"block": 25186052,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T21:18:48",
"op": [
"vote",
{
"voter": "ppitonak",
"author": "eosbeijing",
"permlink": "eos-beijing-supports-the-eos-alliance",
"weight": 10000
}
]
}tstoupvoted (100.00%) @eosbeijing / eos-beijing-supports-the-eos-alliance2018/08/18 12:50:33
tstoupvoted (100.00%) @eosbeijing / eos-beijing-supports-the-eos-alliance
2018/08/18 12:50:33
| voter | tsto |
| author | eosbeijing |
| permlink | eos-beijing-supports-the-eos-alliance |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25175888/Trx e2de727ed11f1bb9e5276c4bf42e230805ebe701 |
View Raw JSON Data
{
"trx_id": "e2de727ed11f1bb9e5276c4bf42e230805ebe701",
"block": 25175888,
"trx_in_block": 43,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T12:50:33",
"op": [
"vote",
{
"voter": "tsto",
"author": "eosbeijing",
"permlink": "eos-beijing-supports-the-eos-alliance",
"weight": 10000
}
]
}eosbeijingpublished a new post: eos-beijing-supports-the-eos-alliance2018/08/18 11:38:24
eosbeijingpublished a new post: eos-beijing-supports-the-eos-alliance
2018/08/18 11:38:24
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | eos-beijing-supports-the-eos-alliance |
| title | EOS Beijing Supports the EOS Alliance |
| body | @@ -1,27 +1,30 @@ !%5Balliance& +eos beijing.png%5D(htt @@ -57,52 +57,52 @@ /DQm -VEB2TpzGmsDyypVZxSZk4nf2Kam3eNTaedpnPuqJU6Wj +RwgDBWvFHvJXReRwZgFibAUA8imAWpgm7suWMdFcG3rT /all @@ -107,16 +107,19 @@ lliance& +eos beijing. |
| json metadata | {"tags":["eos","eosalliance","eosbeijing","blockchain"],"image":["https://cdn.steemitimages.com/DQmRwgDBWvFHvJXReRwZgFibAUA8imAWpgm7suWMdFcG3rT/alliance&eosbeijing.png"],"links":["https://medium.com/@eosalliance1/eos-alliance-launches-with-the-mandate-to-empower-eos-for-all-d17055d86a98"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #25174447/Trx 4c6b542fdab883da898c6ca7bae498c0cf379029 |
View Raw JSON Data
{
"trx_id": "4c6b542fdab883da898c6ca7bae498c0cf379029",
"block": 25174447,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T11:38:24",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "eos-beijing-supports-the-eos-alliance",
"title": "EOS Beijing Supports the EOS Alliance",
"body": "@@ -1,27 +1,30 @@\n !%5Balliance&\n+eos\n beijing.png%5D(htt\n@@ -57,52 +57,52 @@\n /DQm\n-VEB2TpzGmsDyypVZxSZk4nf2Kam3eNTaedpnPuqJU6Wj\n+RwgDBWvFHvJXReRwZgFibAUA8imAWpgm7suWMdFcG3rT\n /all\n@@ -107,16 +107,19 @@\n lliance&\n+eos\n beijing.\n",
"json_metadata": "{\"tags\":[\"eos\",\"eosalliance\",\"eosbeijing\",\"blockchain\"],\"image\":[\"https://cdn.steemitimages.com/DQmRwgDBWvFHvJXReRwZgFibAUA8imAWpgm7suWMdFcG3rT/alliance&eosbeijing.png\"],\"links\":[\"https://medium.com/@eosalliance1/eos-alliance-launches-with-the-mandate-to-empower-eos-for-all-d17055d86a98\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}alphabotupvoted (1.00%) @eosbeijing / eos-beijing-supports-the-eos-alliance2018/08/18 11:18:48
alphabotupvoted (1.00%) @eosbeijing / eos-beijing-supports-the-eos-alliance
2018/08/18 11:18:48
| voter | alphabot |
| author | eosbeijing |
| permlink | eos-beijing-supports-the-eos-alliance |
| weight | 100 (1.00%) |
| Transaction Info | Block #25174055/Trx fff01524e9dbefe88bcac22430cf2c89b8b8dc93 |
View Raw JSON Data
{
"trx_id": "fff01524e9dbefe88bcac22430cf2c89b8b8dc93",
"block": 25174055,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T11:18:48",
"op": [
"vote",
{
"voter": "alphabot",
"author": "eosbeijing",
"permlink": "eos-beijing-supports-the-eos-alliance",
"weight": 100
}
]
}eosbeijingpublished a new post: eos-beijing-supports-the-eos-alliance2018/08/18 11:18:36
eosbeijingpublished a new post: eos-beijing-supports-the-eos-alliance
2018/08/18 11:18:36
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | eos-beijing-supports-the-eos-alliance |
| title | EOS Beijing Supports the EOS Alliance |
| body |  EOS Beijing is proud to announce that we have put our support behind the formation of the EOS Alliance. Below is a shared statement issued by Block Producers and Block Producer Candidates who support the formation of the EOS Alliance. The EOS Mainnet is one of the most ambitious public blockchain launches of our time and expectations have always been high. Today, we take another step forward together as a community to deliver on those expectations. EOS Beijing is very excited to be a part of the widespread support for the EOS Alliance, a non-profit similar to other blockchain foundations, whose goal will be to act as a locus of communication and coordination for the EOS community at large. Beyond acting as an EOS communications hub both within and outside of the token-holder community, the EOS Alliance’s first orders of business will be to curate inclusive community dialogue to lead to consensus recommendations on fundamental action-items: 1. Dispute Resolution & Arbitration in EOS 2. EOS Mainnet Code Repository Management 3. EOS Mainnet & Exchange Relations 4. EOS Governance Documents e.g. A Ratified Constitution The EOS Alliance will be a manifestation of the EOS community’s will yet hold no power nor authority beyond what the token-holders grant it. The managing board of the EOS Alliance will be appointed to start and gradually phase out over the course of a calendar year in exchange for board members who are elected by the token-holders. The interim Executive Director will be Thomas Cox, EOS community leader and SVP of Product at StrongBlock. The formation of the EOS Alliance will provide much needed clarity for the community as we move forward. For more information on the EOS Alliance please visit the official release: https://medium.com/@eosalliance1/eos-alliance-launches-with-the-mandate-to-empower-eos-for-all-d17055d86a98. |
| json metadata | {"tags":["eos","eosalliance","eosbeijing","blockchain"],"image":["https://cdn.steemitimages.com/DQmVEB2TpzGmsDyypVZxSZk4nf2Kam3eNTaedpnPuqJU6Wj/alliance&beijing.png"],"links":["https://medium.com/@eosalliance1/eos-alliance-launches-with-the-mandate-to-empower-eos-for-all-d17055d86a98"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #25174051/Trx 533b66fb5def74ae3d645e5b14906fd7549debb6 |
View Raw JSON Data
{
"trx_id": "533b66fb5def74ae3d645e5b14906fd7549debb6",
"block": 25174051,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T11:18:36",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "eos-beijing-supports-the-eos-alliance",
"title": "EOS Beijing Supports the EOS Alliance",
"body": "\n\nEOS Beijing is proud to announce that we have put our support behind the formation of the EOS Alliance.\n\nBelow is a shared statement issued by Block Producers and Block Producer Candidates who support the formation of the EOS Alliance.\n\nThe EOS Mainnet is one of the most ambitious public blockchain launches of our time and expectations have always been high. Today, we take another step forward together as a community to deliver on those expectations.\n\nEOS Beijing is very excited to be a part of the widespread support for the EOS Alliance, a non-profit similar to other blockchain foundations, whose goal will be to act as a locus of communication and coordination for the EOS community at large.\n\nBeyond acting as an EOS communications hub both within and outside of the token-holder community, the EOS Alliance’s first orders of business will be to curate inclusive community dialogue to lead to consensus recommendations on fundamental action-items:\n\n1. Dispute Resolution & Arbitration in EOS\n\n2. EOS Mainnet Code Repository Management\n\n3. EOS Mainnet & Exchange Relations\n\n4. EOS Governance Documents e.g. A Ratified Constitution\n\nThe EOS Alliance will be a manifestation of the EOS community’s will yet hold no power nor authority beyond what the token-holders grant it. The managing board of the EOS Alliance will be appointed to start and gradually phase out over the course of a calendar year in exchange for board members who are elected by the token-holders. The interim Executive Director will be Thomas Cox, EOS community leader and SVP of Product at StrongBlock.\n\nThe formation of the EOS Alliance will provide much needed clarity for the community as we move forward. For more information on the EOS Alliance please visit the official release: https://medium.com/@eosalliance1/eos-alliance-launches-with-the-mandate-to-empower-eos-for-all-d17055d86a98.",
"json_metadata": "{\"tags\":[\"eos\",\"eosalliance\",\"eosbeijing\",\"blockchain\"],\"image\":[\"https://cdn.steemitimages.com/DQmVEB2TpzGmsDyypVZxSZk4nf2Kam3eNTaedpnPuqJU6Wj/alliance&beijing.png\"],\"links\":[\"https://medium.com/@eosalliance1/eos-alliance-launches-with-the-mandate-to-empower-eos-for-all-d17055d86a98\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}eosbeijingfollowed @eosgravity2018/08/18 10:54:21
eosbeijingfollowed @eosgravity
2018/08/18 10:54:21
| required auths | [] |
| required posting auths | ["eosbeijing"] |
| id | follow |
| json | ["follow",{"follower":"eosbeijing","following":"eosgravity","what":["blog"]}] |
| Transaction Info | Block #25173567/Trx 926b95663fddc75ef63467768a1f155ba4e967c2 |
View Raw JSON Data
{
"trx_id": "926b95663fddc75ef63467768a1f155ba4e967c2",
"block": 25173567,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-18T10:54:21",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"eosbeijing"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"eosbeijing\",\"following\":\"eosgravity\",\"what\":[\"blog\"]}]"
}
]
}steemdelegated 18.553 SP to @eosbeijing2018/08/15 21:23:18
steemdelegated 18.553 SP to @eosbeijing
2018/08/15 21:23:18
| delegator | steem |
| delegatee | eosbeijing |
| vesting shares | 30173.027169 VESTS |
| Transaction Info | Block #25099771/Trx 092933d8a3d5a620af1aff9926ed69b6d179e6a8 |
View Raw JSON Data
{
"trx_id": "092933d8a3d5a620af1aff9926ed69b6d179e6a8",
"block": 25099771,
"trx_in_block": 26,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-15T21:23:18",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "eosbeijing",
"vesting_shares": "30173.027169 VESTS"
}
]
}motherlibertynowupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains2018/07/26 12:57:12
motherlibertynowupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains
2018/07/26 12:57:12
| voter | motherlibertynow |
| author | eosbeijing |
| permlink | shadowzone-private-smart-contracts-on-public-blockchains |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24514335/Trx dc5347a74af9dde64338d10df25ada3a4333d648 |
View Raw JSON Data
{
"trx_id": "dc5347a74af9dde64338d10df25ada3a4333d648",
"block": 24514335,
"trx_in_block": 49,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-26T12:57:12",
"op": [
"vote",
{
"voter": "motherlibertynow",
"author": "eosbeijing",
"permlink": "shadowzone-private-smart-contracts-on-public-blockchains",
"weight": 10000
}
]
}tstoupvoted (100.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure2018/06/30 14:30:24
tstoupvoted (100.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure
2018/06/30 14:30:24
| voter | tsto |
| author | eosbeijing |
| permlink | 79lqkq-eos-beijing-ownership-disclosure |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23777628/Trx fd7e2520665f992804ea803a33b841bca2a6d4d6 |
View Raw JSON Data
{
"trx_id": "fd7e2520665f992804ea803a33b841bca2a6d4d6",
"block": 23777628,
"trx_in_block": 49,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T14:30:24",
"op": [
"vote",
{
"voter": "tsto",
"author": "eosbeijing",
"permlink": "79lqkq-eos-beijing-ownership-disclosure",
"weight": 10000
}
]
}blocktheoryupvoted (100.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure2018/06/30 12:45:12
blocktheoryupvoted (100.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure
2018/06/30 12:45:12
| voter | blocktheory |
| author | eosbeijing |
| permlink | 79lqkq-eos-beijing-ownership-disclosure |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23775524/Trx a1ff70417c4a5a5d14510952e0dd836c44c6233d |
View Raw JSON Data
{
"trx_id": "a1ff70417c4a5a5d14510952e0dd836c44c6233d",
"block": 23775524,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T12:45:12",
"op": [
"vote",
{
"voter": "blocktheory",
"author": "eosbeijing",
"permlink": "79lqkq-eos-beijing-ownership-disclosure",
"weight": 10000
}
]
}acknowledgementupvoted (10.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure2018/06/30 06:03:48
acknowledgementupvoted (10.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure
2018/06/30 06:03:48
| voter | acknowledgement |
| author | eosbeijing |
| permlink | 79lqkq-eos-beijing-ownership-disclosure |
| weight | 1000 (10.00%) |
| Transaction Info | Block #23767497/Trx a9c13ef388a4bc44aa16784d987a95069a1456b4 |
View Raw JSON Data
{
"trx_id": "a9c13ef388a4bc44aa16784d987a95069a1456b4",
"block": 23767497,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T06:03:48",
"op": [
"vote",
{
"voter": "acknowledgement",
"author": "eosbeijing",
"permlink": "79lqkq-eos-beijing-ownership-disclosure",
"weight": 1000
}
]
}lecupvoted (1.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure2018/06/30 05:39:57
lecupvoted (1.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure
2018/06/30 05:39:57
| voter | lec |
| author | eosbeijing |
| permlink | 79lqkq-eos-beijing-ownership-disclosure |
| weight | 100 (1.00%) |
| Transaction Info | Block #23767020/Trx a5e725a5db63af158a02d0f787d868d91c5eda88 |
View Raw JSON Data
{
"trx_id": "a5e725a5db63af158a02d0f787d868d91c5eda88",
"block": 23767020,
"trx_in_block": 23,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T05:39:57",
"op": [
"vote",
{
"voter": "lec",
"author": "eosbeijing",
"permlink": "79lqkq-eos-beijing-ownership-disclosure",
"weight": 100
}
]
}steeming-hotupvoted (7.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure2018/06/30 05:35:06
steeming-hotupvoted (7.00%) @eosbeijing / 79lqkq-eos-beijing-ownership-disclosure
2018/06/30 05:35:06
| voter | steeming-hot |
| author | eosbeijing |
| permlink | 79lqkq-eos-beijing-ownership-disclosure |
| weight | 700 (7.00%) |
| Transaction Info | Block #23766923/Trx c1e786f49299620729fa8bc0ce633222cea63883 |
View Raw JSON Data
{
"trx_id": "c1e786f49299620729fa8bc0ce633222cea63883",
"block": 23766923,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T05:35:06",
"op": [
"vote",
{
"voter": "steeming-hot",
"author": "eosbeijing",
"permlink": "79lqkq-eos-beijing-ownership-disclosure",
"weight": 700
}
]
}eosbeijingdeleted a comment or post2018/06/30 05:33:48
eosbeijingdeleted a comment or post
2018/06/30 05:33:48
| author | eosbeijing |
| permlink | eos-beijing-ownership-disclosure |
| Transaction Info | Block #23766897/Trx b1d1dcf2b78558ec4b33c01734df22c67c130db3 |
View Raw JSON Data
{
"trx_id": "b1d1dcf2b78558ec4b33c01734df22c67c130db3",
"block": 23766897,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T05:33:48",
"op": [
"delete_comment",
{
"author": "eosbeijing",
"permlink": "eos-beijing-ownership-disclosure"
}
]
}eosbeijingpublished a new post: 79lqkq-eos-beijing-ownership-disclosure2018/06/30 05:32:06
eosbeijingpublished a new post: 79lqkq-eos-beijing-ownership-disclosure
2018/06/30 05:32:06
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | 79lqkq-eos-beijing-ownership-disclosure |
| title | EOS Beijing Ownership Disclosure |
| body | EOS Beijing Ownership Disclosure 1. The background of the establishment of EOS Beijing With the end of the EOS crowdsale the EOS community's attention has shifted from acquiring tokens to launching the mainnet, maintaining and developing the EOS ecosystem. Block one and BM, for a variety of reasons, took a decentralized attitude and gave the community more power to plan, launch and operate the EOS Mainnet. This has provided a level of uncertainty initially but a fantastic opportunity for members of the community to form block producers that share EOS values, have technical know how and resource strength to launch and maintain the mainnet collectively. Those who have community support and the recognition of the public have the most responsibilities as active BP's. Block Producers are a vital part of the EOS community and ecosystem. EOS Beijings core members have long been focused on the block chain industry and have built a wealth of industry experience and resources. From our perspective, the blockchain industry after 10 years of development is slowly transitioning from being solely concerned about use for digital currency transactions, ICOs and speculation to using blockchain technology to provide true and viable commercial applications. EOS is the key to this great shift and we expect it to provide the real world use that other blockchains promised. Based on this belief we initiated the establishment of EOS Beijing. We could not miss out on the opportunity to be part of this blockchain experiment and its implementation of the values we share. We also knew that we have the experience and resources to contribute to the EOS ecosystem. We established in early 2018 and declared to be the EOS block producer candidate, and since the launch we have had the privilege of being an early top 21 block producer. 2.The core values of EOS Beijing EOS Beijing follows the following core values: (1) Open and inclusive. We have our own independent values to judge, but we do not want an ideological war. We uphold the concept of community values cohesion, the choice of like-minded members and communities to work together to win. We maintain open communication and dialectical discussion with other communities, even with differing values, because the spirit of EOS is open source autonomy, and even the group that BM thinks values are inconsistent can open new chains and compete. We believe that true justice and value stand out in the open and inclusive, and EOS will grow in the debate, collision and integration of different values. (2) service, diligence. We believe the BP is not the ruler of the EOS kingdom but the night watchman. So our positioning is very clear to serve the EOS ecosystem, the EOS community, the bearer, and the EOS user. We will never be above the community and the bearer, always reminding ourselves of our service identity and being humble and vigilant. We feel our responsibility as a BP is to uphold the principle of due diligence, maintain a high sense of responsibility for the EOS block production, community management, ecological construction and continue to contribute to the strength of EOS. (3) Professional and impartial. EOS Beijing will maintain a high level of focus on EOS technology, ecology, community, and DApp, maintain and enhance professionalism in the fields of technical operation, legal governance, ecological philosophy, commercial applications, and maintain the professional image and credibility of Block Producers. At the same time, in view of the community on bribery, arbitration, governance and other issues of concern and talk about, we will always maintain independence and impartiality, we will not abuse the power of BP, we will actively monitor the behavior of other BPs to maintain a professional and impartial BP community image. 3.Ownership of EOS Beijing EOS Beijing is initiated and owned by independent individuals and institutions. EOS Beijing is currently not registered as a commercial entity in China on the grounds that: (1) The operation of BP does not currently require this. (2) Meet the block chain and EOS distribution of autonomous spirit of conformity (3) BP's hardware and software costs, at present by the founders voluntarily at their own expense, no need commercial financing and other acts therefor reducing the possibilities to be controlled. (4) Some of the compliance considerations. In terms of ownership ratio:  Of course, we do not rule out the possibility of choosing the right time and way to form a business entity later, depending on whether BP is doing its job well, compliance considerations and most of the community's BP recommendations. 4.Lock Period We believe that EOS will be a long-term development process, thus taking a regular approach similar to the traditional shareholding lock to ensure that the EOS Beijing all people can focus on the cause for a long time. Ownership of all members will be unlocked in 4 years. The first year unlocks 1/4, subsequent monthly unlocks the remaining part of the 1/36. 5.The expectation of EOS is that it will be the first large-scale trans-regional, cross-language, trans-ethnic, and trans-social system of community autonomy experiments in human history. The absolute decentralization and openness contained in the governance style of the Soul man BM was never seen before. We are honored to be part of this experiment and to play the important role of BP. We will do everything that we can do to promote the development of EOS to free, non-violent, ethical and autonomous Communities. We hope that EOS not only will realize large-scale commercial application, positively transform society, but also provide open development and use by non-violent communities and change the governance structure of human society. |
| json metadata | {"tags":["eos"],"image":["https://cdn.steemitimages.com/DQmPuVmW1Br5mend5HHjZxP7CCcPFsntLCMUq3Cvg7H6xG9/%E6%8D%95%E8%8E%B7.PNG"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23766863/Trx 3ac927c51d7f72cc9709b57239cbf5b3250dcc44 |
View Raw JSON Data
{
"trx_id": "3ac927c51d7f72cc9709b57239cbf5b3250dcc44",
"block": 23766863,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T05:32:06",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "79lqkq-eos-beijing-ownership-disclosure",
"title": "EOS Beijing Ownership Disclosure",
"body": "EOS Beijing Ownership Disclosure \n \n1. The background of the establishment of EOS Beijing\nWith the end of the EOS crowdsale the EOS community's attention has shifted from acquiring tokens to launching the mainnet, maintaining and developing the EOS ecosystem. \n \nBlock one and BM, for a variety of reasons, took a decentralized attitude and gave the community more power to plan, launch and operate the EOS Mainnet. This has provided a level of uncertainty initially but a fantastic opportunity for members of the community to form block producers that share EOS values, have technical know how and resource strength to launch and maintain the mainnet collectively. Those who have community support and the recognition of the public have the most responsibilities as active BP's. Block Producers are a vital part of the EOS community and ecosystem. \n\n \nEOS Beijings core members have long been focused on the block chain industry and have built a wealth of industry experience and resources. From our perspective, the blockchain industry after 10 years of development is slowly transitioning from being solely concerned about use for digital currency transactions, ICOs and speculation to using blockchain technology to provide true and viable commercial applications. EOS is the key to this great shift and we expect it to provide the real world use that other blockchains promised. \n \nBased on this belief we initiated the establishment of EOS Beijing. We could not miss out on the opportunity to be part of this blockchain experiment and its implementation of the values we share. We also knew that we have the experience and resources to contribute to the EOS ecosystem. \n \nWe established in early 2018 and declared to be the EOS block producer candidate, and since the launch we have had the privilege of being an early top 21 block producer. \n \n2.The core values of EOS Beijing \n \nEOS Beijing follows the following core values: \n(1) Open and inclusive. \nWe have our own independent values to judge, but we do not want an ideological war. We uphold the concept of community values cohesion, the choice of like-minded members and communities to work together to win. \n \nWe maintain open communication and dialectical discussion with other communities, even with differing values, because the spirit of EOS is open source autonomy, and even the group that BM thinks values are inconsistent can open new chains and compete. \nWe believe that true justice and value stand out in the open and inclusive, and EOS will grow in the debate, collision and integration of different values. \n \n(2) service, diligence. \nWe believe the BP is not the ruler of the EOS kingdom but the night watchman. So our positioning is very clear to serve the EOS ecosystem, the EOS community, the bearer, and the EOS user. \n \nWe will never be above the community and the bearer, always reminding ourselves of our service identity and being humble and vigilant. \n \nWe feel our responsibility as a BP is to uphold the principle of due diligence, maintain a high sense of responsibility for the EOS block production, community management, ecological construction and continue to contribute to the strength of EOS. \n \n(3) Professional and impartial. \nEOS Beijing will maintain a high level of focus on EOS technology, ecology, community, and DApp, maintain and enhance professionalism in the fields of technical operation, legal governance, ecological philosophy, commercial applications, and maintain the professional image and credibility of Block Producers. \n \nAt the same time, in view of the community on bribery, arbitration, governance and other issues of concern and talk about, we will always maintain independence and impartiality, we will not abuse the power of BP, we will actively monitor the behavior of other BPs to maintain a professional and impartial BP community image. \n \n \n \n \n3.Ownership of EOS Beijing \nEOS Beijing is initiated and owned by independent individuals and institutions. \n \nEOS Beijing is currently not registered as a commercial entity in China on the grounds that: \n \n(1) The operation of BP does not currently require this. \n \n(2) Meet the block chain and EOS distribution of autonomous spirit of conformity \n \n(3) BP's hardware and software costs, at present by the founders voluntarily at their own expense, no need commercial financing and other acts therefor reducing the possibilities to be controlled. \n \n(4) Some of the compliance considerations. \nIn terms of ownership ratio: \n\nOf course, we do not rule out the possibility of choosing the right time and way to form a business entity later, depending on whether BP is doing its job well, compliance considerations and most of the community's BP recommendations. \n \n4.Lock Period \nWe believe that EOS will be a long-term development process, thus taking a regular approach similar to the traditional shareholding lock to ensure that the EOS Beijing all people can focus on the cause for a long time. Ownership of all members will be unlocked in 4 years. \nThe first year unlocks 1/4, subsequent monthly unlocks the remaining part of the 1/36. \n \n5.The expectation of EOS is that it will be the first large-scale trans-regional, cross-language, trans-ethnic, and trans-social system of community autonomy experiments in human history. The absolute decentralization and openness contained in the governance style of the Soul man BM was never seen before. We are honored to be part of this experiment and to play the important role of BP. We will do everything that we can do to promote the development of EOS to free, non-violent, ethical and autonomous Communities. \n \nWe hope that EOS not only will realize large-scale commercial application, positively transform society, but also provide open development and use by non-violent communities and change the governance structure of human society.",
"json_metadata": "{\"tags\":[\"eos\"],\"image\":[\"https://cdn.steemitimages.com/DQmPuVmW1Br5mend5HHjZxP7CCcPFsntLCMUq3Cvg7H6xG9/%E6%8D%95%E8%8E%B7.PNG\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}eosbeijingpublished a new post: eos-beijing-ownership-disclosure2018/06/30 05:09:57
eosbeijingpublished a new post: eos-beijing-ownership-disclosure
2018/06/30 05:09:57
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | eos-beijing-ownership-disclosure |
| title | EOS Beijing Ownership Disclosure |
| body | @@ -4536,52 +4536,52 @@ /DQm -Na9wbE36Qpcic3nEQDVdkBbbSV1cKkJw6sHcEsE1rLdd +PuVmW1Br5mend5HHjZxP7CCcPFsntLCMUq3Cvg7H6xG9 /%25E6 |
| json metadata | {"tags":["eos"],"image":["https://cdn.steemitimages.com/DQmPuVmW1Br5mend5HHjZxP7CCcPFsntLCMUq3Cvg7H6xG9/%E6%8D%95%E8%8E%B7.PNG"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23766420/Trx 3b81d29d10ba1644d53c8babce30417300fe4e64 |
View Raw JSON Data
{
"trx_id": "3b81d29d10ba1644d53c8babce30417300fe4e64",
"block": 23766420,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T05:09:57",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "eos-beijing-ownership-disclosure",
"title": "EOS Beijing Ownership Disclosure",
"body": "@@ -4536,52 +4536,52 @@\n /DQm\n-Na9wbE36Qpcic3nEQDVdkBbbSV1cKkJw6sHcEsE1rLdd\n+PuVmW1Br5mend5HHjZxP7CCcPFsntLCMUq3Cvg7H6xG9\n /%25E6\n",
"json_metadata": "{\"tags\":[\"eos\"],\"image\":[\"https://cdn.steemitimages.com/DQmPuVmW1Br5mend5HHjZxP7CCcPFsntLCMUq3Cvg7H6xG9/%E6%8D%95%E8%8E%B7.PNG\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}eosbeijingpublished a new post: eos-beijing-ownership-disclosure2018/06/30 04:28:48
eosbeijingpublished a new post: eos-beijing-ownership-disclosure
2018/06/30 04:28:48
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | eos-beijing-ownership-disclosure |
| title | EOS Beijing Ownership Disclosure |
| body | EOS Beijing Ownership Disclosure 1.The background of the establishment of EOS Beijing With the end of the EOS crowdsale the EOS community's attention has shifted from acquiring tokens to launching the mainnet, maintaining and developing the EOS ecosystem. Block one and BM, for a variety of reasons, took a decentralized attitude and gave the community more power to plan, launch and operate the EOS Mainnet. This has provided a level of uncertainty initially but a fantastic opportunity for members of the community to form block producers that share EOS values, have technical know how and resource strength to launch and maintain the mainnet collectively. Those who have community support and the recognition of the public have the most responsibilities as active BP's. Block Producers are a vital part of the EOS community and ecosystem. EOS Beijings core members have long been focused on the block chain industry and have built a wealth of industry experience and resources. From our perspective, the blockchain industry after 10 years of development is slowly transitioning from being solely concerned about use for digital currency transactions, ICOs and speculation to using blockchain technology to provide true and viable commercial applications. EOS is the key to this great shift and we expect it to provide the real world use that other blockchains promised. Based on this belief we initiated the establishment of EOS Beijing. We could not miss out on the opportunity to be part of this blockchain experiment and its implementation of the values we share. We also knew that we have the experience and resources to contribute to the EOS ecosystem. We established in early 2018 and declared to be the EOS block producer candidate, and since the launch we have had the privilege of being an early top 21 block producer. 2.The core values of EOS Beijing EOS Beijing follows the following core values: (1) Open and inclusive. We have our own independent values to judge, but we do not want an ideological war. We uphold the concept of community values cohesion, the choice of like-minded members and communities to work together to win. We maintain open communication and dialectical discussion with other communities, even with differing values, because the spirit of EOS is open source autonomy, and even the group that BM thinks values are inconsistent can open new chains and compete. We believe that true justice and value stand out in the open and inclusive, and EOS will grow in the debate, collision and integration of different values. (2) service, diligence. We believe the BP is not the ruler of the EOS kingdom but the night watchman. So our positioning is very clear to serve the EOS ecosystem, the EOS community, the bearer, and the EOS user. We will never be above the community and the bearer, always reminding ourselves of our service identity and being humble and vigilant. We feel our responsibility as a BP is to uphold the principle of due diligence, maintain a high sense of responsibility for the EOS block production, community management, ecological construction and continue to contribute to the strength of EOS. (3) Professional and impartial. EOS Beijing will maintain a high level of focus on EOS technology, ecology, community, and DApp, maintain and enhance professionalism in the fields of technical operation, legal governance, ecological philosophy, commercial applications, and maintain the professional image and credibility of Block Producers. At the same time, in view of the community on bribery, arbitration, governance and other issues of concern and talk about, we will always maintain independence and impartiality, we will not abuse the power of BP, we will actively monitor the behavior of other BPs to maintain a professional and impartial BP community image. 3.Ownership of EOS Beijing EOS Beijing is initiated and owned by independent individuals and institutions. EOS Beijing is currently not registered as a commercial entity in China on the grounds that: (1) The operation of BP does not currently require this. (2) Meet the block chain and EOS distribution of autonomous spirit of conformity (3) BP's hardware and software costs, at present by the founders voluntarily at their own expense, no need commercial financing and other acts therefor reducing the possibilities to be controlled. (4) Some of the compliance considerations. In terms of ownership ratio:  Of course, we do not rule out the possibility of choosing the right time and way to form a business entity later, depending on whether BP is doing its job well, compliance considerations and most of the community's BP recommendations. 4.Lock Period We believe that EOS will be a long-term development process, thus taking a regular approach similar to the traditional shareholding lock to ensure that the EOS Beijing all people can focus on the cause for a long time. Ownership of all members will be unlocked in 4 years. The first year unlocks 1/4, subsequent monthly unlocks the remaining part of the 1/36. 5.The expectation of EOS is that it will be the first large-scale trans-regional, cross-language, trans-ethnic, and trans-social system of community autonomy experiments in human history. The absolute decentralization and openness contained in the governance style of the Soul man BM was never seen before. We are honored to be part of this experiment and to play the important role of BP. We will do everything that we can do to promote the development of EOS to free, non-violent, ethical and autonomous Communities. We hope that EOS not only will realize large-scale commercial application, positively transform society, but also provide open development and use by non-violent communities and change the governance structure of human society. |
| json metadata | {"tags":["eos"],"image":["https://cdn.steemitimages.com/DQmNa9wbE36Qpcic3nEQDVdkBbbSV1cKkJw6sHcEsE1rLdd/%E6%8D%95%E8%8E%B7.PNG"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23765597/Trx 8629e4f67df0ce47994bccca85c95d5eef4134e1 |
View Raw JSON Data
{
"trx_id": "8629e4f67df0ce47994bccca85c95d5eef4134e1",
"block": 23765597,
"trx_in_block": 26,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-30T04:28:48",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "eos-beijing-ownership-disclosure",
"title": "EOS Beijing Ownership Disclosure",
"body": "EOS Beijing Ownership Disclosure \n \n1.The background of the establishment of EOS Beijing\nWith the end of the EOS crowdsale the EOS community's attention has shifted from acquiring tokens to launching the mainnet, maintaining and developing the EOS ecosystem. \n \nBlock one and BM, for a variety of reasons, took a decentralized attitude and gave the community more power to plan, launch and operate the EOS Mainnet. This has provided a level of uncertainty initially but a fantastic opportunity for members of the community to form block producers that share EOS values, have technical know how and resource strength to launch and maintain the mainnet collectively. Those who have community support and the recognition of the public have the most responsibilities as active BP's. Block Producers are a vital part of the EOS community and ecosystem. \n\n \nEOS Beijings core members have long been focused on the block chain industry and have built a wealth of industry experience and resources. From our perspective, the blockchain industry after 10 years of development is slowly transitioning from being solely concerned about use for digital currency transactions, ICOs and speculation to using blockchain technology to provide true and viable commercial applications. EOS is the key to this great shift and we expect it to provide the real world use that other blockchains promised. \n \nBased on this belief we initiated the establishment of EOS Beijing. We could not miss out on the opportunity to be part of this blockchain experiment and its implementation of the values we share. We also knew that we have the experience and resources to contribute to the EOS ecosystem. \n \nWe established in early 2018 and declared to be the EOS block producer candidate, and since the launch we have had the privilege of being an early top 21 block producer. \n \n2.The core values of EOS Beijing \n \nEOS Beijing follows the following core values: \n(1) Open and inclusive. \nWe have our own independent values to judge, but we do not want an ideological war. We uphold the concept of community values cohesion, the choice of like-minded members and communities to work together to win. \n \nWe maintain open communication and dialectical discussion with other communities, even with differing values, because the spirit of EOS is open source autonomy, and even the group that BM thinks values are inconsistent can open new chains and compete. \nWe believe that true justice and value stand out in the open and inclusive, and EOS will grow in the debate, collision and integration of different values. \n \n(2) service, diligence. \nWe believe the BP is not the ruler of the EOS kingdom but the night watchman. So our positioning is very clear to serve the EOS ecosystem, the EOS community, the bearer, and the EOS user. \n \nWe will never be above the community and the bearer, always reminding ourselves of our service identity and being humble and vigilant. \n \nWe feel our responsibility as a BP is to uphold the principle of due diligence, maintain a high sense of responsibility for the EOS block production, community management, ecological construction and continue to contribute to the strength of EOS. \n \n(3) Professional and impartial. \nEOS Beijing will maintain a high level of focus on EOS technology, ecology, community, and DApp, maintain and enhance professionalism in the fields of technical operation, legal governance, ecological philosophy, commercial applications, and maintain the professional image and credibility of Block Producers. \n \nAt the same time, in view of the community on bribery, arbitration, governance and other issues of concern and talk about, we will always maintain independence and impartiality, we will not abuse the power of BP, we will actively monitor the behavior of other BPs to maintain a professional and impartial BP community image. \n \n \n \n \n3.Ownership of EOS Beijing \nEOS Beijing is initiated and owned by independent individuals and institutions. \n \nEOS Beijing is currently not registered as a commercial entity in China on the grounds that: \n \n(1) The operation of BP does not currently require this. \n \n(2) Meet the block chain and EOS distribution of autonomous spirit of conformity \n \n(3) BP's hardware and software costs, at present by the founders voluntarily at their own expense, no need commercial financing and other acts therefor reducing the possibilities to be controlled. \n \n(4) Some of the compliance considerations. \nIn terms of ownership ratio: \n\nOf course, we do not rule out the possibility of choosing the right time and way to form a business entity later, depending on whether BP is doing its job well, compliance considerations and most of the community's BP recommendations. \n \n4.Lock Period \nWe believe that EOS will be a long-term development process, thus taking a regular approach similar to the traditional shareholding lock to ensure that the EOS Beijing all people can focus on the cause for a long time. Ownership of all members will be unlocked in 4 years. \nThe first year unlocks 1/4, subsequent monthly unlocks the remaining part of the 1/36. \n \n5.The expectation of EOS is that it will be the first large-scale trans-regional, cross-language, trans-ethnic, and trans-social system of community autonomy experiments in human history. The absolute decentralization and openness contained in the governance style of the Soul man BM was never seen before. We are honored to be part of this experiment and to play the important role of BP. We will do everything that we can do to promote the development of EOS to free, non-violent, ethical and autonomous Communities. \n \nWe hope that EOS not only will realize large-scale commercial application, positively transform society, but also provide open development and use by non-violent communities and change the governance structure of human society.",
"json_metadata": "{\"tags\":[\"eos\"],\"image\":[\"https://cdn.steemitimages.com/DQmNa9wbE36Qpcic3nEQDVdkBbbSV1cKkJw6sHcEsE1rLdd/%E6%8D%95%E8%8E%B7.PNG\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/06/25 10:36:36
2018/06/25 10:36:36
| parent author | eosbeijing |
| parent permlink | re-slavix-re-eosnewyork-the-state-of-eos-governance-ecaf-and-regarbiter-20180625t062506877z |
| author | bluabaleno |
| permlink | re-eosbeijing-re-slavix-re-eosnewyork-the-state-of-eos-governance-ecaf-and-regarbiter-20180625t103634240z |
| title | |
| body | Agreed. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #23629018/Trx e8e65eec00abdb90190db12f8f8dfa5ec80a670e |
View Raw JSON Data
{
"trx_id": "e8e65eec00abdb90190db12f8f8dfa5ec80a670e",
"block": 23629018,
"trx_in_block": 15,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-25T10:36:36",
"op": [
"comment",
{
"parent_author": "eosbeijing",
"parent_permlink": "re-slavix-re-eosnewyork-the-state-of-eos-governance-ecaf-and-regarbiter-20180625t062506877z",
"author": "bluabaleno",
"permlink": "re-eosbeijing-re-slavix-re-eosnewyork-the-state-of-eos-governance-ecaf-and-regarbiter-20180625t103634240z",
"title": "",
"body": "Agreed.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}gauravsahniupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains2018/06/25 07:05:30
gauravsahniupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains
2018/06/25 07:05:30
| voter | gauravsahni |
| author | eosbeijing |
| permlink | shadowzone-private-smart-contracts-on-public-blockchains |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23624797/Trx a1692904941aa9c739a293c3a9ea0baf4a4df431 |
View Raw JSON Data
{
"trx_id": "a1692904941aa9c739a293c3a9ea0baf4a4df431",
"block": 23624797,
"trx_in_block": 41,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-25T07:05:30",
"op": [
"vote",
{
"voter": "gauravsahni",
"author": "eosbeijing",
"permlink": "shadowzone-private-smart-contracts-on-public-blockchains",
"weight": 10000
}
]
}2018/06/25 06:25:09
2018/06/25 06:25:09
| parent author | slavix |
| parent permlink | re-eosnewyork-the-state-of-eos-governance-ecaf-and-regarbiter-20180625t024943165z |
| author | eosbeijing |
| permlink | re-slavix-re-eosnewyork-the-state-of-eos-governance-ecaf-and-regarbiter-20180625t062506877z |
| title | |
| body | It's better to pay arbiters out of worker proposal fund. They should be independent from the bps. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #23623990/Trx 8f09d94a219cb02f523a68475f92bb9d65cab7a9 |
View Raw JSON Data
{
"trx_id": "8f09d94a219cb02f523a68475f92bb9d65cab7a9",
"block": 23623990,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-25T06:25:09",
"op": [
"comment",
{
"parent_author": "slavix",
"parent_permlink": "re-eosnewyork-the-state-of-eos-governance-ecaf-and-regarbiter-20180625t024943165z",
"author": "eosbeijing",
"permlink": "re-slavix-re-eosnewyork-the-state-of-eos-governance-ecaf-and-regarbiter-20180625t062506877z",
"title": "",
"body": "It's better to pay arbiters out of worker proposal fund. They should be independent from the bps.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/06/19 07:20:06
2018/06/19 07:20:06
| voter | blocktheory |
| author | eosbeijing |
| permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23452343/Trx a167e887d9a754b7748b229915d53f917b207f5f |
View Raw JSON Data
{
"trx_id": "a167e887d9a754b7748b229915d53f917b207f5f",
"block": 23452343,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-19T07:20:06",
"op": [
"vote",
{
"voter": "blocktheory",
"author": "eosbeijing",
"permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"weight": 10000
}
]
}eosbeijingfollowed @thomasbcox2018/06/18 13:25:42
eosbeijingfollowed @thomasbcox
2018/06/18 13:25:42
| required auths | [] |
| required posting auths | ["eosbeijing"] |
| id | follow |
| json | ["follow",{"follower":"eosbeijing","following":"thomasbcox","what":["blog"]}] |
| Transaction Info | Block #23430861/Trx e02279938c6808235b1764cbecad07283c98ba8b |
View Raw JSON Data
{
"trx_id": "e02279938c6808235b1764cbecad07283c98ba8b",
"block": 23430861,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T13:25:42",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"eosbeijing"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"eosbeijing\",\"following\":\"thomasbcox\",\"what\":[\"blog\"]}]"
}
]
}eosbeijingfollowed @helloeos2018/06/18 13:25:33
eosbeijingfollowed @helloeos
2018/06/18 13:25:33
| required auths | [] |
| required posting auths | ["eosbeijing"] |
| id | follow |
| json | ["follow",{"follower":"eosbeijing","following":"helloeos","what":["blog"]}] |
| Transaction Info | Block #23430858/Trx 277a475f235d3807a24bf059caaa624b705eb2ff |
View Raw JSON Data
{
"trx_id": "277a475f235d3807a24bf059caaa624b705eb2ff",
"block": 23430858,
"trx_in_block": 49,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T13:25:33",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"eosbeijing"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"eosbeijing\",\"following\":\"helloeos\",\"what\":[\"blog\"]}]"
}
]
}eosbeijingfollowed @eosphere2018/06/18 13:25:30
eosbeijingfollowed @eosphere
2018/06/18 13:25:30
| required auths | [] |
| required posting auths | ["eosbeijing"] |
| id | follow |
| json | ["follow",{"follower":"eosbeijing","following":"eosphere","what":["blog"]}] |
| Transaction Info | Block #23430857/Trx 04cd0e14c5ba8d11ae81731e8b7c78eaeb818c60 |
View Raw JSON Data
{
"trx_id": "04cd0e14c5ba8d11ae81731e8b7c78eaeb818c60",
"block": 23430857,
"trx_in_block": 61,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T13:25:30",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"eosbeijing"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"eosbeijing\",\"following\":\"eosphere\",\"what\":[\"blog\"]}]"
}
]
}eosbeijingfollowed @eosgo2018/06/18 13:25:27
eosbeijingfollowed @eosgo
2018/06/18 13:25:27
| required auths | [] |
| required posting auths | ["eosbeijing"] |
| id | follow |
| json | ["follow",{"follower":"eosbeijing","following":"eosgo","what":["blog"]}] |
| Transaction Info | Block #23430856/Trx 06fdc69a2d92a5659fcd7c8cc9651b3e9d0c799e |
View Raw JSON Data
{
"trx_id": "06fdc69a2d92a5659fcd7c8cc9651b3e9d0c799e",
"block": 23430856,
"trx_in_block": 25,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T13:25:27",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"eosbeijing"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"eosbeijing\",\"following\":\"eosgo\",\"what\":[\"blog\"]}]"
}
]
}eosbeijingfollowed @eos-canada2018/06/18 13:25:24
eosbeijingfollowed @eos-canada
2018/06/18 13:25:24
| required auths | [] |
| required posting auths | ["eosbeijing"] |
| id | follow |
| json | ["follow",{"follower":"eosbeijing","following":"eos-canada","what":["blog"]}] |
| Transaction Info | Block #23430855/Trx 71a441f236615b8fe1c2789087256a47017e4f3d |
View Raw JSON Data
{
"trx_id": "71a441f236615b8fe1c2789087256a47017e4f3d",
"block": 23430855,
"trx_in_block": 35,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T13:25:24",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"eosbeijing"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"eosbeijing\",\"following\":\"eos-canada\",\"what\":[\"blog\"]}]"
}
]
}eosbeijingfollowed @eos-asia2018/06/18 13:25:21
eosbeijingfollowed @eos-asia
2018/06/18 13:25:21
| required auths | [] |
| required posting auths | ["eosbeijing"] |
| id | follow |
| json | ["follow",{"follower":"eosbeijing","following":"eos-asia","what":["blog"]}] |
| Transaction Info | Block #23430854/Trx c11907907a479313474c0a4ac9a25bd78a2fb2e5 |
View Raw JSON Data
{
"trx_id": "c11907907a479313474c0a4ac9a25bd78a2fb2e5",
"block": 23430854,
"trx_in_block": 53,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T13:25:21",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"eosbeijing"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"eosbeijing\",\"following\":\"eos-asia\",\"what\":[\"blog\"]}]"
}
]
}eosbeijingfollowed @bluejays2018/06/18 13:24:57
eosbeijingfollowed @bluejays
2018/06/18 13:24:57
| required auths | [] |
| required posting auths | ["eosbeijing"] |
| id | follow |
| json | ["follow",{"follower":"eosbeijing","following":"bluejays","what":["blog"]}] |
| Transaction Info | Block #23430846/Trx 6bd236f1050c563a3a8d85476242c85b130fca9e |
View Raw JSON Data
{
"trx_id": "6bd236f1050c563a3a8d85476242c85b130fca9e",
"block": 23430846,
"trx_in_block": 48,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T13:24:57",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"eosbeijing"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"eosbeijing\",\"following\":\"bluejays\",\"what\":[\"blog\"]}]"
}
]
}tstoupvoted (100.00%) @eosbeijing / private-smart-contract-on-public-blockchain-shadowzone-whitepaper2018/06/18 06:03:06
tstoupvoted (100.00%) @eosbeijing / private-smart-contract-on-public-blockchain-shadowzone-whitepaper
2018/06/18 06:03:06
| voter | tsto |
| author | eosbeijing |
| permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23422011/Trx 48531db4da533622ba1e2773da72a3476a2c5304 |
View Raw JSON Data
{
"trx_id": "48531db4da533622ba1e2773da72a3476a2c5304",
"block": 23422011,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T06:03:06",
"op": [
"vote",
{
"voter": "tsto",
"author": "eosbeijing",
"permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"weight": 10000
}
]
}2018/06/18 05:35:33
2018/06/18 05:35:33
| parent author | eosbeijing |
| parent permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| author | dailyxkcd |
| permlink | re-private-smart-contract-on-public-blockchain-shadowzone-whitepaper-20180618t053532 |
| title | |
| body | Brah! |
| json metadata | |
| Transaction Info | Block #23421461/Trx 7bd671f25fe7f3ece5fb80a0601c32d7d1cc4195 |
View Raw JSON Data
{
"trx_id": "7bd671f25fe7f3ece5fb80a0601c32d7d1cc4195",
"block": 23421461,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T05:35:33",
"op": [
"comment",
{
"parent_author": "eosbeijing",
"parent_permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"author": "dailyxkcd",
"permlink": "re-private-smart-contract-on-public-blockchain-shadowzone-whitepaper-20180618t053532",
"title": "",
"body": "Brah!",
"json_metadata": ""
}
]
}eosbeijingpublished a new post: private-smart-contract-on-public-blockchain-shadowzone-whitepaper2018/06/18 05:34:21
eosbeijingpublished a new post: private-smart-contract-on-public-blockchain-shadowzone-whitepaper
2018/06/18 05:34:21
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| title | ShadowZone WhitePaper |
| body | @@ -1,20 +1,53 @@ +Our site: http://shadowzone.io/%0A%0A ShadowZone: Private @@ -47750,16 +47750,49 @@ ontract systems. +%0A%0AOur site: http://shadowzone.io/ |
| json metadata | {"tags":["eos","smart","contract"],"image":["https://cdn.steemitimages.com/DQmWNCqMBbw17exLurLtrDx3rUVATbsdA6jmZjaS5zW9cur/e39f9c21-32e6-4b70-aa9d-ce64263dd04b-uarch-0.png","https://cdn.steemitimages.com/DQmaMDXhNTY5W8t9qRhLyu76gAJ4AmHw8Uax6CfzrwfeW1c/35974c2a-2d26-4658-9237-79b152e56e78-uprotocol-0.png"],"app":"steemit/0.1","format":"markdown","links":["http://shadowzone.io/"]} |
| Transaction Info | Block #23421437/Trx 23f1d2c77866c10c66d4a80d79077fd3bb0a4a69 |
View Raw JSON Data
{
"trx_id": "23f1d2c77866c10c66d4a80d79077fd3bb0a4a69",
"block": 23421437,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T05:34:21",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"title": "ShadowZone WhitePaper",
"body": "@@ -1,20 +1,53 @@\n+Our site: http://shadowzone.io/%0A%0A\n ShadowZone: Private \n@@ -47750,16 +47750,49 @@\n ontract systems.\n+%0A%0AOur site: http://shadowzone.io/\n",
"json_metadata": "{\"tags\":[\"eos\",\"smart\",\"contract\"],\"image\":[\"https://cdn.steemitimages.com/DQmWNCqMBbw17exLurLtrDx3rUVATbsdA6jmZjaS5zW9cur/e39f9c21-32e6-4b70-aa9d-ce64263dd04b-uarch-0.png\",\"https://cdn.steemitimages.com/DQmaMDXhNTY5W8t9qRhLyu76gAJ4AmHw8Uax6CfzrwfeW1c/35974c2a-2d26-4658-9237-79b152e56e78-uprotocol-0.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"links\":[\"http://shadowzone.io/\"]}"
}
]
}2018/06/18 04:52:24
2018/06/18 04:52:24
| voter | sensation |
| author | eosbeijing |
| permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23420598/Trx 327a5c466b4ce700d0f85e95ee6adfcd1b859f37 |
View Raw JSON Data
{
"trx_id": "327a5c466b4ce700d0f85e95ee6adfcd1b859f37",
"block": 23420598,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T04:52:24",
"op": [
"vote",
{
"voter": "sensation",
"author": "eosbeijing",
"permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"weight": 10000
}
]
}2018/06/18 04:44:48
2018/06/18 04:44:48
| voter | moby-dick |
| author | eosbeijing |
| permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23420446/Trx c42fbb58f589168cfb1181cf3ad0906f02e6e482 |
View Raw JSON Data
{
"trx_id": "c42fbb58f589168cfb1181cf3ad0906f02e6e482",
"block": 23420446,
"trx_in_block": 34,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T04:44:48",
"op": [
"vote",
{
"voter": "moby-dick",
"author": "eosbeijing",
"permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"weight": 10000
}
]
}zedpalupvoted (100.00%) @eosbeijing / private-smart-contract-on-public-blockchain-shadowzone-whitepaper2018/06/18 04:08:45
zedpalupvoted (100.00%) @eosbeijing / private-smart-contract-on-public-blockchain-shadowzone-whitepaper
2018/06/18 04:08:45
| voter | zedpal |
| author | eosbeijing |
| permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23419725/Trx 4fcfa95186a16522a61b9e51356efafce6f12d0a |
View Raw JSON Data
{
"trx_id": "4fcfa95186a16522a61b9e51356efafce6f12d0a",
"block": 23419725,
"trx_in_block": 15,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T04:08:45",
"op": [
"vote",
{
"voter": "zedpal",
"author": "eosbeijing",
"permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"weight": 10000
}
]
}eosbeijingpublished a new post: private-smart-contract-on-public-blockchain-shadowzone-whitepaper2018/06/18 03:42:51
eosbeijingpublished a new post: private-smart-contract-on-public-blockchain-shadowzone-whitepaper
2018/06/18 03:42:51
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| title | Private Smart Contract on Public Blockchain:ShadowZone WhitePaper |
| body | ShadowZone: Private Smart Contract on Public Blockchain Abstract Blockchain is becoming popular as a distributed and reliable ledger which allows distrustful parties to transact safely without trusting third parties. Emerging blockchain systems like EOS support smart contracts where miners can run arbitrary user-defined programs. However, one of the biggest concerns about the blockchain and the smart contract is privacy, since all the transactions on the chain are exposed to the public. In this paper, we present ShadowZone, a system that leverages hardware enclave to ensure the confidentiality of smart contracts while keeping the integrity and availability based on existing public blockchains like EOS. ShadowZone establishes a confidential and secure platform protected by Trusted Execution Environment (TEE) off the public blockchain for the execution and storage of private contracts. It only puts the process of verification on the public blockchain. The private computation runs off the blockchain with a protocol token called "SZT", which workers earn by providing correct and confidential computation for users. This creates a powerful incentive for workers who own computation devices with TEE to participant into the network. Users can deploy and execute their smart contracts on ShadowZone just like using existing smart contract systems (e.g., Ethereum and ESOIO), while maintaining the confidentiality. ShadowZone also achieves availability and robustness by replicating data of private contracts on an off-chain network called TEE-DS. The data stored in TEE-DS is encrypted with secret keys which are only held by TEE and the data transmission channel between any two nodes is protected by a secure session key. ShadowZone proposes a complete solution for executing private smart contracts on public blockchains. We provide a design of our system including a protocol of the cryptographic communication and verification and show the applicability and feasibility of the ShadowZone by various case studies. Introduction Blockchain, proposed as an underlying technology of cryptocurrency like Bitcoin, allows users to transfer currency over a distributed, public and trust-less network. Over the last few years, blockchain systems evolved to support smart contracts which can run custom Turing-complete code on the blockchain, such as Ethereum and EOS. Today, public cryptocurrencies are widely used. On Ethereum, more than 10 million ethers are held by more than 1 million smart contracts. On these blockchain systems, all the participants have the entire log of the system and reach a distributed consensus on the transactions that will modify the state of the chain. This high degree of replication and the strict consensus mechanism ensure integrity and availability but make all data public, which brings the deficiency in confidentiality. In this paper, we present ShadowZone, a system that enables private smart contract based on public blockchains. Our idea is to combine hardware enclaves and public blockchains to offer confidentiality of smart contracts while keeping the integrity and availability. On the public blockchain, we create a public smart contract named "bounty contract" which performs the process of deployment and verification and stores the metadata of private contract. We also introduce an off-chain distributed storage named TEE-DS to store binary and states of private contracts. The entire TEE-DS is protected by hardware enclaves so all the data it stores will not be leaked or tampered with. Users can then publish the deployment and invocation request and the remuneration on the bounty contract to draw workers (who provide off-chain execution environment) in. If a worker wants to execute a private contract, it needs to run a worker client in hardware enclave, which will get the binary and state from TEE-DS to execute. After the off-chain execution, the enclave will generate a particular signature and put it back to the EOS blockchain, which is used to verify the correctness of the execution. Since we just put the metadata (like hash of binary, public key, state versions) and the encrypted data (like input and output) of ShadowZone to the bounty contract, there is no need for any modification to the underlying protocol of existing blockchain systems. Meanwhile, many workers comprise a distributed storage to improve the reliability and guarantee the availability. We also implement a prototype of ShadowZone with the Intel SGX on EOS blockchain network and show the applicability with three use cases. This work: •presents ShadowZone, a confidential, distributed, trust-less off-chain smart contract system clinging to existing public blockchain networks like EOS without any modification. •describes the detailed architecture and protocol of ShadowZone. •shows the applicability of ShadowZone with three use cases and demonstrates the security and availability of ShadowZone. Background In this section, we provide background on the technologies that underpin ShadowZone. We first give a short overview of the blockchain and smart contracts, explore the lack of confidentiality of current smart contract systems, then introduce the hardware enclave and finally describe the threat model of ShadowZone. Blockchain A blockchain typically serves as an open, decentralized and trustless distributed ledger which is maintained by all participants. Some participants, called miners, form a peer-to-peer network and all have the full copy of the blockchain. They collect transactions signed by users. After validating the signatures, they packed these transactions into a block. Each block contains the information of the transactions as well as the hash of the previous block, which organizes the data as a sequential list of blocks, called a blockchain. The blockchain is a distributed system designed for Byzantine fault tolerance. Each transaction which may modify the state of the chain will be broadcasted to all miners in the network. Once a block is generated, all the miners need to achieve a consensus on whether to accept it or not. Each miner can decide the block’s content arbitrarily, that is to say, he/she can decide which transactions will be packed into the block. Miners can always generate different blocks with the same parent at the same time, which will cause inconsistency called a fork. To solve the bifurcation, an honest miner always chooses to follow the longest branch. If an attacker controls more than 50% of the nodes, he/she can unilaterally generate the branch containing the fake transactions faster than the branch containing the real ones, which causes the double spending problem. To solve this problem, a miner needs to prove that he/she has done a certain amount of work before generating a block. With this proof, known as Proof of Work (PoW), the block is acknowledged to be valid. PoW makes a miner create blocks at the rate related to the proportional of his/her mining power, whichprevents Sybil attack. Smart Contract and EOS The smart contract can trace back to 1996, proposed by Nick Szabo. It is described as "a set of promises, specified in digital form, including protocols within which the parties perform on these promises". The smart contract is usually designed to ensure the execution of a contract and to avoid malicious act as well as unforeseen circumstances. It can minimize the utilization of the trusted third party, which results in the reduction of transaction cost, and potentially circumvent censorship, collusion and counter-party risk. Blockchain makes smart contracts possible. Based on the blockchain, smart contracts usually take the form of a general-purpose program. Users can write and deploy any Turing-complete program on the blockchain network. The most emerging smart contract implementation is EOS. An EOS smart contract is a user-generated application based on WebAssembly (WASM). WASM is a web standard with widespread support of Google, Microsoft, Apple and others. EOS currently uses clang/llvm with C/C++ compiler as its toolchain for building smart contracts, since C++ is the best language for developing high-performance and secure smart contracts. In EOS, a smart contract is registered on the blockchain and executed on EOS nodes. The smart contract defines the interface (actions, parameters, data structures) and the code that implements the interface. The code is compiled into a canonical bytecode format for EOS nodes to retrieve and execute. The blockchain stores the transactions (e.g., legal transfers, game moves) of the contract. Once a smart contract is deployed, it will be executed autonomously. Even its creator cannot stop the execution or modify the code arbitrarily. An EOS smart contract consists of a set of action and type definitions. Action definitions specify and implement the behaviors of the contract. The type definitions specify the required content and structures. EOS actions operate primarily in a message-based communication architecture. A client invokes actions by sending (pushing) messages to nodeos. This can be done using the cleos command. It can also be done using one of the EOS send methods (e.g. EOS::action::send). nodeos dispatches action requests to the WASM code that implements a contract. That code runs in its entirety, then processing continues to the next action. The wide public participation of smart contracts and the strict consensus mechanism ensure the enforcement, integrity and availability of smart contracts. However, the lack of privacy becomes a pain point that restricts the applications of smart contracts in some privacy-sensitive scenarios. Hardware Enclave Trusted executed environment (TEE) is a new feature provided by recent commodity CPUs. It creates a secure area which guarantees the integrity and confidentiality of code and data inside. TEE serves as an isolated environment running in parallel with OS. It provides a high-level security for software inside by reducing the trusted computing base (TCB) to only the CPU. Applications running in TEE have secure memory and cryptographic operations to resist attacks from other applications, even the privileged software such as OS or hypervisor. Our design is general-purpose and applies to any TEE that has above features. In this paper, our implementation is based on Intel’s Software Guard Extensions (SGX) . Intel SGX provides a trusted and isolated environment called enclave. With this hardware feature in CPU, users can deploy their softwares in a remote host with integrity and confidentiality unless CPU package was hacked. An application running inside an enclave is protected from other malicious software including the operating system. SGX provides remote attestation which allows a remote host to verify the application running in the enclave and generate a secure channel to communicate with it. In the process of initiation of an enclave, the CPU measures the trusted code and the trusted memory within the enclave and produces a hash based on all memory pages known as measurement. Then the software inside the enclave can acquire a report which contains the measurement and other supplementary data such as the public key. This report is signed by a hardware-protected key in CPU to prove that the measured software is running in SGX indeed. The remote attester can then verify the report with Intel Attestation Service (IAS) which can certify that the signature is valid and the corresponding report is generated from authentic CPUs. Threat Model Our threat model assumes that multiple parties mutually distrust each other. They are potentially malicious and may try to steal information of smart contracts, modify the execution flow and deviate from the protocol for their benefit. Each party may send, drop, modify, record arbitrary messages in the protocol at any time during the contract deployment and invocation. Any party may crash and stop responding entirely. We assume that the blockchain is trustable and available all the time. The information on the blockchain is tamper-resistant but public to everyone. We also assume that network adversaries can intercept the communication between parties, but they cannot control the whole network so that the communication can be eventually established, for example, the user can send a request to the blockchain network and get the response. We trust the hardware enclave, its manufacture (like Intel) and the remote attestation service. As long as a node passes the remote attestation, it will be able to execute the shadow contract within its enclave. The rest of the system, including the other software stacks (outside the enclave) and the hardware is not trusted. Side-channel attacks against enclaves and DoS attacks are not considered in this paper. Our system also relies on the privacy of private key. Each private contract has a unique private key only possessed by the enclave. The private key is used to generate the attestation that the contract has been executed correctly. If an attacker steals the private key in some way, he/she can get paid from the EOS without executing the contract, which could compromise the integrity but not privacy. System Overview The goal of ShadowZone is to provide a confidential platform to executing private smart contracts which can be integrated with existing public blockchain such as EOS. Specifically, the privacy of a smart contract consists of the following three parts. •Privacy of the specification of a smart contract. The source code of a private contract must be hidden during the deployment and subsequent process of execution and synchronization. •Privacy of the execution of a smart contract. Once a private contract is invoked, the executing process on a worker client cannot be spied and the call arguments, as well as the return values should be hidden during the execution. •Privacy of the state of a smart contract. The internal state of a private contract may contain user’s secrets and can reflect information of recent transactions. So it should not be published on the blockchain. To guarantee the confidentiality of the code and data of a smart contract, a secure channel between a user and TEE-DS will be established before transferring the contract. The contract will be encrypted before transferring and can only be decrypted inside the corresponding enclave. To preserve the privacy of execution, we only put the information of invocation and verification onto the blockchain. During the deployment of a private contract, TEE will generate a key-pair for this contract and publish the public key. The invocation arguments are encrypted with the contract’s public key which can only be decrypted within the enclave. The return value will be encrypted by a user-provided key which is delivered along with call arguments. In the entire process, the information of the execution is encrypted except inside the enclave. Anyone even the worker cannot leak the internal executing state.To guarantee the confidentiality of the persistent state of a private contract, ShadowZone stores only the hash of the ledger on the EOS instead of all data. The data can only be managed and viewed inside enclaves. Due to the limited secure memory of enclave like SGX, data could be moved to untrusted memory or disk, and sometimes need network transmission for backup or synchronization. Before writing out the data, ShadowZone will encrypt all data with the hardware key which is only kept by CPUs. This ensures that the data can only be accessed by authenticated users through ShadowZone and no one outside can view or manipulate the persistent state. System Components Figure.1 shows the architecture of ShadowZone. ShadowZone can be broken down into several subcomponents. •Bounty Contract. A bounty contract is a native smart contract deployed on blockchain directly, serving as the public portion of ShadowZone. •User Client. A user client provides interfaces to end users. It does not require enclave to execute. •Worker Client. A worker client is responsible for the execution and maintenance of private contracts. It needs to run inside enclaves. •TEE-DS. TEE-DS (Distributed Storage) serves as a distributed network which stores private contracts.  We create a smart contract named bounty contract on the EOS blockchain network which serves as a platform for publishing private contract, grabbing execution task and remuneration settlement. Bounty contract is a public contract that every participant in EOS can see and use. A user can deploy his/her private contracts and then invoke them like ordinary contracts via the bounty contract. On the other side, workers with TEE-enabled devices can look up executory tasks in the bounty contract, get the parameters, do the computation, and finally commit the result of the execution. A user client provides interfaces including contract deployment and invocation for users. It communicates with bounty contract through cleos, command line interface to interact with the EOS blockchain. A user client can be launched without TEE, so it is only trusted by its user. A worker client is used for fetching executory tasks from bounty contract, getting code and data of private contracts from TEE-DS, executing contracts, committing results and updating the persistent state of contracts. The main part of a worker client, which does the contract correlation processing, runs inside enclaves. It communicates with bounty contract through cleos. Furthermore, a worker client also serves as a server node in TEE-DS. Many worker clients comprise TEE-DS, a peer-to-peer network storing the code and data of private contracts. In the process of execution of contracts, all the nodes maintain consistency by Paxos-like consensus algorithm. For a certain contract, different workers store the same data but encrypt it with different secret keys. Enclaves maintain the consistency of the unencrypted logical data. The data synchronization is performed on the safe channel between two enclaves after the remote attestation. Example Here is a simple example to briefly demonstrate the process of deployment and invocation from different perspectives in our system. •Deployment: Suppose a user needs to deploy a private contract to ShadowZone. He/She first compiles the code and puts the binary to TEE-DS through the user client. TEE-DS will generate a pair of keys, bind them with the contract and transfer only the public key back to the user. The user client then uploads identification information of the contract (including the public key and the hash of binary, etc.) to the bounty contract. Now the contract is publicly available. •Invocation: Once the user needs to invoke his/her private contract, he/she sends an invocation request (including arguments) to the bounty contract with a sum of remuneration. A worker client will get the arguments from the bounty contract and get the private contract’s binary from the TEE-DS with the public key as its ID. It then loads the binary to its hardware enclave and executes using the arguments to get a return value. After that, it sends the new state of the private contract to TEE-DS, which will be held at this moment. The worker then makes a response (including the return value and signature, etc.) and sends it to the bounty contract. The bounty contract will verify the response to ensure that it is generated by correct contract, states, and arguments in real hardware enclave before transferring the remuneration to the worker. Once TEE-DS confirms that the execution has been acknowledged by the bounty contract, it will update the states of the private contract, which finishes the process of one invocation. As shown in the example, the EOS blockchain ensures the availability (a private contract will eventually get executed), and the integrity (the result cannot be modified), while the hardware enclave is used to protect privacy. There are many challenges unlisted, e.g., how to design a protocol and key management to defend against attacks like rollback and impersonation, how to minimize the trust on the manager in a second-price auction, which will be described in the following sections. Design In this section we present the design of ShadowZone. We first describe the three major parts of ShadowZone: the bounty contract (Subsection [subsec:bounty-contract]), the shadow contract (Subsection [subsec:shadow-contract]) and the TEE-DS (Subsection [subsec:tee-ds]) and then introduce the detailed protocol (Subsection [subsec:protocol]). Bounty Contract Bounty contract is a native smart contract deployed on the EOS. Its major responsibility is to perform the public portion of deployment, invocation and verification of private contracts. Sometimes it needs to generate transactions to handle the settlement. It maintains two lists: a contract list and a todolist. Each entry in the contract list represents a private contract. It contains (1) the contract’s ID (as the primary key), (2) the contract’s public key, (3) a version number, (4) an owner list, (5) the hash of the contract’s persistent state, and (6) the balance of the contract. Once the bounty contract receives a deploying request, it will construct a new entry and add it into the contract list, and the invocation will update the hash value and increase the version number. The contract list can be used to record and verify the state of private contracts but does not expose any information about the core business logic. Users can deposit funds into a private contract by sending the corresponding tokens to bounty contract through deploy transaction or invoke transaction (described in Subsection [subsec:protocol]). The bounty contract records the funds as the balance of a contract. When the result of an invocation is a settlement, the bounty contract will check if the balance is enough before performing the transfer. It is worth noting that the bounty contract only records the total balance of the contract. The detailed distribution of this sum money is decided by the contract itself. The todolist serves as a task pool. Users publish invocation tasks into the todolist to allow workers to bid the task. Each entry represents an invocation request, which contains (1) the task ID (as the primary key), (2) the contract’s public key, (3) the encrypted arguments, (4) the remuneration offered by the user, (5) the state (e.g.,TODO or FINISHED), and (6) the encrypted return value. Only one worker can gain the remuneration (typically the first), which is guaranteed by the EOS. The bounty contract is the key component of our system. Users and workers communicate indirectly through the bounty contract. Thus, the integrity and the availability of operations on private contracts like deployment and invocation are ensured by the public blockchain. Shadow Contract We propose to build a confidential environment for smart contract execution using hardware enclave, but it is not enough to just deploy the native EOS contract directly because only the process of the execution can be hidden, while the information outside such as the call arguments and return values is still exposed. To this end, we introduce Shadow Contract, a re-design of the native EOS smart contract. Shadow Contract uses a contract gate to isolate the core business logic of the smart contract. The contract gate is loaded by the worker client before the execution of smart contracts, endowed with the private key of the smart contract. The contract gate has two primary functionalities: decrypting arguments and generating the response. The two functionalities are independent of the contract code, which means the contract gate can be compatible with any private contract. To preserve the privacy of the call arguments, users need to encrypt them with the public key of the contract before sending them to the bounty contract. Before execution, the contract gate first decrypts the arguments and then invokes the target function with the plaintext. After the execution, a response is required to put back to the bounty contract. A response includes the execution’s return value, the version number before the execution, the hash of the contract’s state after the execution, and the settlement information. What is more, an invocation verification signature (IVS) is required to attached to the response. IVS is used for verifying whether the contract has been executed correctly inside an enclave. The contract gate signs the response along with thehash of call arguments and the worker’s ID by the secret key of the contract to generate IVS. The encryption can only be performed after the execution within enclaves. Then the bounty contract can decrypt IVS by the public key of the contract to verify the execution. The inclusion of the hash of call arguments is to ensure that the worker does execute the contract with given arguments. Since IVS contains the ID of the worker, the remuneration will be sent to the right worker even when a malicious attacker captures IVS and resents it to the bounty contract using his/her own EOS account. The return value of the execution is required to be sent back to the user without exposure. To this end, the user needs to provide another symmetric key along with the arguments and encrypt them together with the public key of the contract. The contract gate will encrypt the return value with this key and put the cipher-text into the response, which will then be put back to the bounty contract and only the user can decrypt it. When a function is to trigger a settlement on the EOS, it will return a transaction-type object which the contract gate will put into the response. If a response contains settlement information, the bounty contract will generate an EOS transaction to transfer the money. Besides the above-mentioned data, the contract gate also puts the hash of the contract state after execution into the response which is used as an attestation for off-chain contract transfer. TEE-DS TEE-DSTEE-DS is a peer-to-peer network consisting of many worker clients. It serves as a distributed storage of private contracts which can provide high reliability against malfunction. The secrets (e.g., the code, data and private key) of a private contract are protected by hardware enclave, which guarantees the confidentiality. Admission Mechanism: Anyone runs the worker client inside an enclave can join the TEE-DS as a worker. To get permission, the expectant worker needs to connect one of the approved workers and offer a CPU-signed statement that he/she is executing a particular enclave. Once the statement is certified, which is known as remote attestation, the expectant worker can then join the network, get the current network constitution and synchronize data from other workers. Synchronization Mechanism: After a worker performs an invocation of a private contract, he/she needs to broadcast the updates to other workers. However, some workers may publish different updates of the same contract simultaneously. This happens for several reasons: (1) the states before invocation are different; (2) the invocation requests they choose are different; (3) there are some malicious actions. We utilize the consensus on the blockchain to evade conflicts in TEE-DS. When a worker sends the response of an invocation to the bounty contract, he/she must specify the version number before the execution and the hash of the contract’s state after the execution. Protocol The ShadowZone protocol operates in two scenarios: 1) contract deployment, and 2) contract invocation. Figure. 2 shows the process. Just like smart contract systems based on public blockchains, our current system does not support withdrawal mechanisms unless they have been coded in the contract. Considering the irreversibility and nonrepudiation, a contract cannot be stopped from the outside once deployed. The following is a detailed description of the process of these two scenarios. For simplicity, we ignore mining fees in this subsection, although they can be supported in the implementation. Contract Deployment The first scenario of the ShadowZone protocol is contract deployment, as shown in the Fig. 2-A. Similar to using EOS natively, users write the business logic of their private contracts on their clients using native languages (like C/C++), then compile the code, deploy them onto the TEE-DS, and meanwhile upload the identification information (e.g., the hash of the code) to the bounty contract.The final purpose of the deployment is to generate an asymmetric key pair, of which the private key is only kept by the enclave, so that the subsequent invocation can be protected by the public key directly without establishing a secure communication channel. A1. First, the user sends the binary code to TEE-DS through a secure channel, which is established through remote attestation and protected by a Key〖_session〗 which is used for encrypting data in the session. Once the code is received, TEE-DS will generate an asymmetric encryption key pair(based on the RSA algorithm): Key〖_(c_p)〗 and Key〖_(c_s)〗 (p for public and s for secret), which is unique for each contract. Then TEE-DS sends Key〖_(c_p)〗 back to the user. A2. After receiving Key〖_(c_p)〗, the user will upload the identification information to the bounty contract, essentially announcing the existence of a new private contract. The information includes: 1) Key〖_(c_p)〗, 2) the owner list (the user’s public address as default), and 3) the hash of the binary code. This is done by the cleos, which generates a deploy transaction containing the information and sends it to the bounty contract. The bounty contract then creates a new contract record in its contract list with the identification information, sets the version number to 0, and sets the state to DEPLOYED. A3. At last, after the deploy transaction is acknowledged, the code of the private contract along with the key pair will be broadcasted to all other workers in TEE-DS. Contract Invocation Once a private contract has been deployed, users can invoke it just like invoking native EOS contracts. The procedure is shown in the Fig. 2-B.  B1. A user initiates an invocation request through its user client. Similar to the native contract invocation in EOS, the user must specify the contract’s Key〖_(c_p)〗, the remuneration and the corresponding parameters including the function name and call arguments. B2. The user client will process the request: 1) adding the timestamp into the request body, 2) generating a secret key Key〖_req〗 which is only used for this request and adding it into the request body, and 3) using the Key〖_(c_p)〗 to encrypt the request except for the remuneration, then send the data to the e. B3. The cleos generates an invoke transaction including the contract’s Key〖_(c_p)〗, the encrypted request and the remuneration, which is sent to the bounty contract. B4. Once the bounty contract receives the invoke transaction, it first verifies the identification to ensure that the contract exists and the request is from one of the owners of the contract. It then adds a new entry with the information included in the invoke transaction into the todolist marked as TODO, and transfers the remuneration into its account simultaneously. B5. After the invoke transaction is acknowledged, workers can see the executory tasks. They can choose any task and get the related information including Key〖_(c_p)〗 and encrypted request from the bounty contract. B6. By using Key〖_(c_p)〗, a worker can ask the TEE-DS for the contract’s code and load the contract into its enclave along with the encrypted request. Inside enclave, the contract gate first decrypts the request to get the arguments and the Key〖_req〗, and then executes the specified function. B7. If the function exits normally, the contract gate will broadcast the modification of the contract’s persistent state to other workers in TEE-DS and then generate a response including the following parts:1) the version number of the contract before the execution, 2) the hash of the contract’s state after the execution, 3) the return value (if the function has one) which is encrypted by Key〖_req〗, 4) the settlement information (if the function has one), and 5) the IVS (described in Subsection [subsec:shadow-contract]). The worker client then sends the response back to the bounty contract and the bounty contract can verify the validity of the IVS with Key〖_(c_p)〗 to ensure that this worker has completed this task correctly. After the verification, the bounty contract updates the entry in the todolist, marking it as FINISHED and filling the return value if any, and updates the information of the contract including the version number and the hash of contract state. Then the user can fetch the return value and decrypt it by Key〖_req〗. If the result is marked as a settlement, the bounty contract will generate a settlement transaction with the settlement information in the response. The first worker to finish it will obtain the remuneration. B8. Once the result is acknowledged by bounty contract, the other workers in TEE-DS will accept the modification. Use Cases In this section we introduce some use cases to explain how we can use the ShadowZone to preserve the privacy of smart contract. Protecting Simple Vote We first implement a simple vote example to show the confidentiality of private contract. The scenario is that some people want to start a vote between themselves by a smart contract on the EOS, but they do not want to expose the content of this vote to the public. In our implementation, we assume that the participants know and trust each other and create the vote contract together. Algorithm [code:vote] shows the approximate logic of the example but not the detail. First, all the voters agree on the voting code (private contract). Then they deploy the contract as described in Section [subsec:protocol], which can be performed by any one of the participants. After the deployment is acknowledged, each participant can invoke the cast() function to cast their ballot. The cast() operation will be executed by workers using hardware enclave. Any participant can invoke the check function to query the current state of the vote at any time. It is noteworthy that the whole process of the vote including the cast and the check is hidden and only the participants can view it. The workers can get involved in executing but they will never know what indeed happens inside the contract. If a participant is malicious in this case, he/she can only leak the vote result but not the detailed information. [t]0.98 [1]⊳ #1 [H] [code:vote] [1] $\boldsymbol{vote} \gets \{0,0,0,0,0\}$ $\boldsymbol{vote}[option]++$ Protecting Transaction Details We consider the following scenario: a seller and a buyer have a contract with a certain price and quantity of some commodity. The key secret of the scenario is the detail of the purchase including the price, the quantity and maybe some promotion strategy in some complicated cases, while the result (i.e., the total money transferred) which will eventually be reflected on the EOS is not protected. The approximate code is shown in Algorithm [code:transaction]. To ensure the efficacy of the contract, the buyer is required to deposit some funds as balance before making a purchase, which is done by invoking the deposit() and send the corresponding tokens to the bounty contract. Once the both parties are prepared to make a deal, they can invoke the purchase() with the negotiated price and quantity. The invocation of purchase() requires to be signed by both parties. Either party can invoke the settlement() for a refund. The bounty contract will check the total amount of refund before generating the settlement transaction. The example can be extended to a multi-participants scenario which can hide the detail of transactions among the participants and do settlement regularly. Although the transfer of tokens is public on EOS, it is acceptable in many cases because the privacy of transaction details is much more important. And users can do a settlement after a number of transactions, which mixes up the results of these transactions and makes it difficult to resolve. [t]0.49 [1]⊳ #1 [H] [code:transaction] [1] int seller_addr int buyer_addr int seller_blc int buyer_blc buyer_blc+=amount buyer_blc-=amount*price seller_blc+=amount*price settlement←new Transaction() settlement.add(seller_addr,seller_blc) settlement.add(buyer_addr,buyer_blc) [t]0.49 [FOR]ForEach[1] #1 [1]⊳ #1 [H] [code:second-price] [1] Map⟨int,int⟩ $\boldsymbol{balances}$ int bestPrice←-1 int secondPrice←-1 int winner←-1 int seller←-1 $\boldsymbol{balances}.clear()$ seller←addrOfSeller $\boldsymbol{balances}.insert(addr,funds)$ secondPrice←bestPrice bestPrice←price winner←addr secondPrice←price settlement←newTransaction settlement.add(seller,secondPrice) $settlement.add(winner,\boldsymbol{balances}[winner]$ -secondPrice) settlement.add(b.first,b.second) Second-Price Auction In a second-price auction, the bidder who offers the highest price wins but pays the second highest price. The essential element of second-price auctions is that bidders offer bids without knowing the bid of other bidders. We implements an example auction program using the ShadowZone, as shown in Algorithm [code:second-price]. The code above is an approximation of our real implementation. There are two different roles in this case: the manager and the bidders. First the manager can start an auction with the seller’s address so that the fund can be transferred to the seller immediately once the auction ends. After the auction starts successfully, each bidder can offer their price by invoking bid(). Since the tokens transfer on EOS is public, from which the bid price could be inferred, so we allow a user to obfuscate the real price by sending an arbitrary (but more than the real price) amount of tokens to bounty contract, and the excess will be returned to the user after the auction ends. The manager will decide when to conclude the auction and invoke the conclude() to transfer the money from the winner to the seller and refund other bidders’ funds. ShadowZone guarantees the input independent privacy that each user can never see others’ bids even after the auction. In this way, users’ bids are independent of others’ bids. Also, the manager’s function is limited to starting and terminating the auction. Even if the manager is malicious, he/she cannot disclose any information of the auction. Security Analysis In this section, we discuss how ShadowZone mitigates potential attacks. Each party may send, drop, modify, record arbitrary messages in the protocol at any time during the contract deployment and invocation. So we discuss and evaluate the security of ShadowZone. Malicious Worker: During the contract deployment, an attacker may pretend to be a worker and defraud the user of the code of his/her private contract. To defend this attack, remote attestation is required before the communication. The worker must provide a report which is signed by hardware-protected key to prove that he/she runs the unmodified worker client in enclave indeed. Even if the attacker has compromised the network, he/she cannot spy or tamper any message because the communication between the user and the worker is based on a secure channel which is protected by a session key after remote attestation. If the user who performs the deployment is dishonest, he/she cannot get any more privileges than other users in that the secret key of the contract is generated and kept by enclaves. Stealing Invocation Information: The contract invocation is mediated by bounty contract which is publicly visible on the EOS. An attacker may try to steal the invocation information by spying the bounty contract. But this will not work because all the secrets of invocation are encrypted. The user encrypts the arguments with the public key of the contract, and oppositely, the enclave will encrypt the corresponding return value by another key which is transferred along with the arguments by the user. So the attacker can only see the inessential information such as the amount of the remuneration. Since the secrets of an invocation are fully hidden except for the invoker, ShadowZone can guarantee the personal privacy without any exposure risk from a malicious manager, which is a potential concern of some other private blockchain system such as Hawk [5]. Integrity of Invocation: There are potential attackers including dishonest workers who want to compromise the integrity of the invocation by tampering invocation requests or committing fake results. Since the invocation requests are acknowledged on EOS, attackers can manipulate them only by controlling more than half of the state of EOS, which is considered impossible. The response of an invocation includes IVS which contains the hash of corresponding arguments and is signed with the contract’s private key by the enclave. The bounty contract can check the IVS with the contract’s public key to verify that the worker executes the contract correctly with the given arguments inside an enclave. So no one can fake a response to the bounty contract. Replay Attack: To protect the private contract from the replay attack, each message will be endowed with a timestamp. When the bounty contract receives an invoke message, it will first check the timestamp and refuse the old requests. The communication between users and workers will be protected in the same manner. Furthermore, the response of an invocation must specify the corresponding task in the todolist of the bounty contract. Thus the only one response will be accepted by the bounty contract for one task. It is worth noting that the worker’s address inside the IVS decides who will gain the remuneration so it is no use for attackers to intercept the IVS. We implement ShadowZone using Intel SGX which guarantees the integrity and confidentiality of the execution. Intel SGX can protect the execution of smart contracts from attackers on the same host, even those who compromise the OS or control physical access. All the data of the contract is encrypted except inside the enclaves. Malicious workers or attackers on the same machine can only stop service, modify or record the encrypted messages, which will not harm the integrity and confidentiality of our system. For the attacks which exploit the hardware vulnerabilities (e.g., Meltdown and Spectre CPU security flaws), Intel has submitted patches to fix the problems. Actually, most side-channel attacks require multiple attempts to steal information from the enclave, so we can prevent these attacks effectively by limiting the execution times. This is a good idea we will probably implement in the future. It is worth noting that our protocol is not Intel specific and we can implement out system easily on the base of another trusted hardware. Discussion Availability: Currently, the availability of a blockchain system depends on the participation to a large extend. Similarly, ShadowZone needs a number of workers to comprise the TEE-DS and provide services for private contracts. A nascent system always lacks user participation and few workers are willing to work, and it will take a long time to develop to maturation. So we choose to build our system on the base of the mature EOS system and make use of its availability without any modification to the EOS.In addition to EOS, we also need to establish a public platform to provide related services such as the client download (both the user client and the worker client) and maintaining the information of TEE-DS. With these services, anyone who has a machine with enclave can download a worker client, and then find and join the TEE-DS as a worker. In the beginning, we may build the TEE-DS with few nodes as a test version. With the broad participation of EOS, we anticipate that the requirement of private smart contracts and the remuneration will draw more users and workers in. Incentive Mechanism: In current design of ShadowZone, workers only get remuneration for executing contracts. But there is no incentive mechanism for storing private contracts. Thus some utilitarian workers may stop their machines immediately after one task, and keep waiting until new tasks are sent to bounty contract. Since the remuneration is only gained by the fastest worker, the time of execution is closely connected with profit. If a worker only executes contracts without storing them, the latency of synchronizing data (e.g., binary of contracts) from other workers will add more overhead to execution time and reduce expected profit, which motivates workers storing private contracts locally. Furthermore, the worker client is executed as a whole and the response is generated only after all the work is done (including spreading data to other TEE-DS nodes), which is ensured by enclave, and hence no worker can perform part of the execution to maximize profit. Workload Measurement: Ethereum provides a gas mechanism, which endows every operation with a fixed price. With Ethereum’s runtime environment (EVM), the workload of each execution can be measured and then the gas consumption can be calculated with the gas price. The execution will exit immediately once the gas is run out. This mechanism can prevent DoS attacks such as requests for executing some infinite loop within smart contracts. In our current implementation, the contract is executed in the native environment without a similar monitoring mechanism. To solve this problem, we can measure the workload by execution time. Each invocation task will be endowed with a timeout corresponding to the amount of remuneration. If some workers finish the execution before timeout, the first one will win. If the workload of the execution is so heavy that no worker can finish it within before timeout, workers can still gain the remuneration with a measurement to prove that the execution indeed exits after a timeout. The measurement can be generated by enclave, which is similar to Proof of Elapsed Time (PoET) used by Hyperledger Sawtooth . Conclusion We introduced ShadowZone, a system that addresses a major concern about the current smart contract systems based on the blockchainthe lack of confidentiality. Unlike the pure and computationally complex solution (such as Zcash) and the reconstructed licensing chain (such as Coco), ShadowZone can guarantee the confidentiality of existing public blockchains like EOS without any modification. ShadowZone separates the process of the verification of a smart contract from the private execution, and only puts the verification onto the blockchain, without revealing any secrets. The actual logic of smart contracts is executed by off-chain TEE and the communication is encrypted by a secret key only kept by the TEE. We used a native EOS smart contract named bounty contract to handle the publishing, verification and settlement of a private contract, which ensures the integrity and coerciveness. Then we presented the applicability by case studies. We believe that ShadowZone is a practical approach to building confidential public smart contract systems. |
| json metadata | {"tags":["eos","smart","contract"],"image":["https://cdn.steemitimages.com/DQmWNCqMBbw17exLurLtrDx3rUVATbsdA6jmZjaS5zW9cur/e39f9c21-32e6-4b70-aa9d-ce64263dd04b-uarch-0.png","https://cdn.steemitimages.com/DQmaMDXhNTY5W8t9qRhLyu76gAJ4AmHw8Uax6CfzrwfeW1c/35974c2a-2d26-4658-9237-79b152e56e78-uprotocol-0.png"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23419207/Trx db0e52d1532673e5f1e4cc9836495e0c43fb5a62 |
View Raw JSON Data
{
"trx_id": "db0e52d1532673e5f1e4cc9836495e0c43fb5a62",
"block": 23419207,
"trx_in_block": 38,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T03:42:51",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"title": "Private Smart Contract on Public Blockchain:ShadowZone WhitePaper",
"body": "ShadowZone: Private Smart Contract on Public Blockchain\n\nAbstract\n\nBlockchain is becoming popular as a distributed and reliable ledger which allows distrustful parties to transact safely without trusting third parties. Emerging blockchain systems like EOS support smart contracts where miners can run arbitrary user-defined programs. However, one of the biggest concerns about the blockchain and the smart contract is privacy, since all the transactions on the chain are exposed to the public.\n\nIn this paper, we present ShadowZone, a system that leverages hardware enclave to ensure the confidentiality of smart contracts while keeping the integrity and availability based on existing public blockchains like EOS. ShadowZone establishes a confidential and secure platform protected by Trusted Execution Environment (TEE) off the public blockchain for the execution and storage of private contracts. It only puts the process of verification on the public blockchain. The private computation runs off the blockchain with a protocol token called \"SZT\", which workers earn by providing correct and confidential computation for users. This creates a powerful incentive for workers who own computation devices with TEE to participant into the network. Users can deploy and execute their smart contracts on ShadowZone just like using existing smart contract systems (e.g., Ethereum and ESOIO), while maintaining the confidentiality. ShadowZone also achieves availability and robustness by replicating data of private contracts on an off-chain network called TEE-DS. The data stored in TEE-DS is encrypted with secret keys which are only held by TEE and the data transmission channel between any two nodes is protected by a secure session key. ShadowZone proposes a complete solution for executing private smart contracts on public blockchains.\n\nWe provide a design of our system including a protocol of the cryptographic communication and verification and show the applicability and feasibility of the ShadowZone by various case studies.\n\nIntroduction\n\nBlockchain, proposed as an underlying technology of cryptocurrency like Bitcoin, allows users to transfer currency over a distributed, public and trust-less network. Over the last few years, blockchain systems evolved to support smart contracts which can run custom Turing-complete code on the blockchain, such as Ethereum and EOS. Today, public cryptocurrencies are widely used. On Ethereum, more than 10 million ethers are held by more than 1 million smart contracts. On these blockchain systems, all the participants have the entire log of the system and reach a distributed consensus on the transactions that will modify the state of the chain. This high degree of replication and the strict consensus mechanism ensure integrity and availability but make all data public, which brings the deficiency in confidentiality.\n\nIn this paper, we present ShadowZone, a system that enables private smart contract based on public blockchains. Our idea is to combine hardware enclaves and public blockchains to offer confidentiality of smart contracts while keeping the integrity and availability. On the public blockchain, we create a public smart contract named \"bounty contract\" which performs the process of deployment and verification and stores the metadata of private contract. We also introduce an off-chain distributed storage named TEE-DS to store binary and states of private contracts. The entire TEE-DS is protected by hardware enclaves so all the data it stores will not be leaked or tampered with. Users can then publish the deployment and invocation request and the remuneration on the bounty contract to draw workers (who provide off-chain execution environment) in. If a worker wants to execute a private contract, it needs to run a worker client in hardware enclave, which will get the binary and state from TEE-DS to execute. After the off-chain execution, the enclave will generate a particular signature and put it back to the EOS blockchain, which is used to verify the correctness of the execution. Since we just put the metadata (like hash of binary, public key, state versions) and the encrypted data (like input and output) of ShadowZone to the bounty contract, there is no need for any modification to the underlying protocol of existing blockchain systems. Meanwhile, many workers comprise a distributed storage to improve the reliability and guarantee the availability. We also implement a prototype of ShadowZone with the Intel SGX on EOS blockchain network and show the applicability with three use cases.\n\nThis work:\n\n•presents ShadowZone, a confidential, distributed, trust-less off-chain smart contract system clinging to existing public blockchain networks like EOS without any modification.\n•describes the detailed architecture and protocol of ShadowZone.\n•shows the applicability of ShadowZone with three use cases and demonstrates the security and availability of ShadowZone.\n\nBackground\n\nIn this section, we provide background on the technologies that underpin ShadowZone. We first give a short overview of the blockchain and smart contracts, explore the lack of confidentiality of current smart contract systems, then introduce the hardware enclave and finally describe the threat model of ShadowZone.\n\nBlockchain\n\nA blockchain typically serves as an open, decentralized and trustless distributed ledger which is maintained by all participants. Some participants, called miners, form a peer-to-peer network and all have the full copy of the blockchain. They collect transactions signed by users. After validating the signatures, they packed these transactions into a block. Each block contains the information of the transactions as well as the hash of the previous block, which organizes the data as a sequential list of blocks, called a blockchain. The blockchain is a distributed system designed for Byzantine fault tolerance. Each transaction which may modify the state of the chain will be broadcasted to all miners in the network. Once a block is generated, all the miners need to achieve a consensus on whether to accept it or not. Each miner can decide the block’s content arbitrarily, that is to say, he/she can decide which transactions will be packed into the block. Miners can always generate different blocks with the same parent at the same time, which will cause inconsistency called a fork. To solve the bifurcation, an honest miner always chooses to follow the longest branch.\n\nIf an attacker controls more than 50% of the nodes, he/she can unilaterally generate the branch containing the fake transactions faster than the branch containing the real ones, which causes the double spending problem. To solve this problem, a miner needs to prove that he/she has done a certain amount of work before generating a block. With this proof, known as Proof of Work (PoW), the block is acknowledged to be valid. PoW makes a miner create blocks at the rate related to the proportional of his/her mining power, whichprevents Sybil attack.\n\nSmart Contract and EOS\n\nThe smart contract can trace back to 1996, proposed by Nick Szabo. It is described as \"a set of promises, specified in digital form, including protocols within which the parties perform on these promises\". The smart contract is usually designed to ensure the execution of a contract and to avoid malicious act as well as unforeseen circumstances. It can minimize the utilization of the trusted third party, which results in the reduction of transaction cost, and potentially circumvent censorship, collusion and counter-party risk. Blockchain makes smart contracts possible. Based on the blockchain, smart contracts usually take the form of a general-purpose program. Users can write and deploy any Turing-complete program on the blockchain network.\n\nThe most emerging smart contract implementation is EOS. An EOS smart contract is a user-generated application based on WebAssembly (WASM). WASM is a web standard with widespread support of Google, Microsoft, Apple and others. EOS currently uses clang/llvm with C/C++ compiler as its toolchain for building smart contracts, since C++ is the best language for developing high-performance and secure smart contracts.\n\nIn EOS, a smart contract is registered on the blockchain and executed on EOS nodes. The smart contract defines the interface (actions, parameters, data structures) and the code that implements the interface. The code is compiled into a canonical bytecode format for EOS nodes to retrieve and execute. The blockchain stores the transactions (e.g., legal transfers, game moves) of the contract. Once a smart contract is deployed, it will be executed autonomously. Even its creator cannot stop the execution or modify the code arbitrarily.\n\nAn EOS smart contract consists of a set of action and type definitions. Action definitions specify and implement the behaviors of the contract. The type definitions specify the required content and structures. EOS actions operate primarily in a message-based communication architecture. A client invokes actions by sending (pushing) messages to nodeos. This can be done using the cleos command. It can also be done using one of the EOS send methods (e.g. EOS::action::send). nodeos dispatches action requests to the WASM code that implements a contract. That code runs in its entirety, then processing continues to the next action.\n\nThe wide public participation of smart contracts and the strict consensus mechanism ensure the enforcement, integrity and availability of smart contracts. However, the lack of privacy becomes a pain point that restricts the applications of smart contracts in some privacy-sensitive scenarios.\n\nHardware Enclave\n\nTrusted executed environment (TEE) is a new feature provided by recent commodity CPUs. It creates a secure area which guarantees the integrity and confidentiality of code and data inside. TEE serves as an isolated environment running in parallel with OS. It provides a high-level security for software inside by reducing the trusted computing base (TCB) to only the CPU. Applications running in TEE have secure memory and cryptographic operations to resist attacks from other applications, even the privileged software such as OS or hypervisor.\n\nOur design is general-purpose and applies to any TEE that has above features. In this paper, our implementation is based on Intel’s Software Guard Extensions (SGX) . Intel SGX provides a trusted and isolated environment called enclave. With this hardware feature in CPU, users can deploy their softwares in a remote host with integrity and confidentiality unless CPU package was hacked. An application running inside an enclave is protected from other malicious software including the operating system.\n\nSGX provides remote attestation which allows a remote host to verify the application running in the enclave and generate a secure channel to communicate with it. In the process of initiation of an enclave, the CPU measures the trusted code and the trusted memory within the enclave and produces a hash based on all memory pages known as measurement. Then the software inside the enclave can acquire a report which contains the measurement and other supplementary data such as the public key. This report is signed by a hardware-protected key in CPU to prove that the measured software is running in SGX indeed. The remote attester can then verify the report with Intel Attestation Service (IAS) which can certify that the signature is valid and the corresponding report is generated from authentic CPUs.\n\nThreat Model\n\nOur threat model assumes that multiple parties mutually distrust each other. They are potentially malicious and may try to steal information of smart contracts, modify the execution flow and deviate from the protocol for their benefit. Each party may send, drop, modify, record arbitrary messages in the protocol at any time during the contract deployment and invocation. Any party may crash and stop responding entirely.\n\nWe assume that the blockchain is trustable and available all the time. The information on the blockchain is tamper-resistant but public to everyone. We also assume that network adversaries can intercept the communication between parties, but they cannot control the whole network so that the communication can be eventually established, for example, the user can send a request to the blockchain network and get the response.\n\nWe trust the hardware enclave, its manufacture (like Intel) and the remote attestation service. As long as a node passes the remote attestation, it will be able to execute the shadow contract within its enclave. The rest of the system, including the other software stacks (outside the enclave) and the hardware is not trusted. Side-channel attacks against enclaves and DoS attacks are not considered in this paper.\n\nOur system also relies on the privacy of private key. Each private contract has a unique private key only possessed by the enclave. The private key is used to generate the attestation that the contract has been executed correctly. If an attacker steals the private key in some way, he/she can get paid from the EOS without executing the contract, which could compromise the integrity but not privacy.\n\nSystem Overview\n\nThe goal of ShadowZone is to provide a confidential platform to executing private smart contracts which can be integrated with existing public blockchain such as EOS. Specifically, the privacy of a smart contract consists of the following three parts.\n\n•Privacy of the specification of a smart contract. The source code of a private contract must be hidden during the deployment and subsequent process of execution and synchronization.\n\n•Privacy of the execution of a smart contract. Once a private contract is invoked, the executing process on a worker client cannot be spied and the call arguments, as well as the return values should be hidden during the execution.\n\n•Privacy of the state of a smart contract. The internal state of a private contract may contain user’s secrets and can reflect information of recent transactions. So it should not be published on the blockchain.\n\nTo guarantee the confidentiality of the code and data of a smart contract, a secure channel between a user and TEE-DS will be established before transferring the contract. The contract will be encrypted before transferring and can only be decrypted inside the corresponding enclave.\n\nTo preserve the privacy of execution, we only put the information of invocation and verification onto the blockchain. During the deployment of a private contract, TEE will generate a key-pair for this contract and publish the public key. The invocation arguments are encrypted with the contract’s public key which can only be decrypted within the enclave. The return value will be encrypted by a user-provided key which is delivered along with call arguments. In the entire process, the information of the execution is encrypted except inside the enclave. Anyone even the worker cannot leak the internal executing state.To guarantee the confidentiality of the persistent state of a private contract, ShadowZone stores only the hash of the ledger on the EOS instead of all data. The data can only be managed and viewed inside enclaves. Due to the limited secure memory of enclave like SGX, data could be moved to untrusted memory or disk, and sometimes need network transmission for backup or synchronization. Before writing out the data, ShadowZone will encrypt all data with the hardware key which is only kept by CPUs. This ensures that the data can only be accessed by authenticated users through ShadowZone and no one outside can view or manipulate the persistent state.\n\nSystem Components\n\nFigure.1 shows the architecture of ShadowZone. ShadowZone can be broken down into several subcomponents.\n\n•Bounty Contract. A bounty contract is a native smart contract deployed on blockchain directly, serving as the public portion of ShadowZone.\n\n•User Client. A user client provides interfaces to end users. It does not require enclave to execute.\n\n•Worker Client. A worker client is responsible for the execution and maintenance of private contracts. It needs to run inside enclaves.\n\n•TEE-DS. TEE-DS (Distributed Storage) serves as a distributed network which stores private contracts.\n\n\n\nWe create a smart contract named bounty contract on the EOS blockchain network which serves as a platform for publishing private contract, grabbing execution task and remuneration settlement. Bounty contract is a public contract that every participant in EOS can see and use. A user can deploy his/her private contracts and then invoke them like ordinary contracts via the bounty contract. On the other side, workers with TEE-enabled devices can look up executory tasks in the bounty contract, get the parameters, do the computation, and finally commit the result of the execution.\n\nA user client provides interfaces including contract deployment and invocation for users. It communicates with bounty contract through cleos, command line interface to interact with the EOS blockchain. A user client can be launched without TEE, so it is only trusted by its user.\n\nA worker client is used for fetching executory tasks from bounty contract, getting code and data of private contracts from TEE-DS, executing contracts, committing results and updating the persistent state of contracts. The main part of a worker client, which does the contract correlation processing, runs inside enclaves. It communicates with bounty contract through cleos. Furthermore, a worker client also serves as a server node in TEE-DS.\n\nMany worker clients comprise TEE-DS, a peer-to-peer network storing the code and data of private contracts. In the process of execution of contracts, all the nodes maintain consistency by Paxos-like consensus algorithm. For a certain contract, different workers store the same data but encrypt it with different secret keys. Enclaves maintain the consistency of the unencrypted logical data. The data synchronization is performed on the safe channel between two enclaves after the remote attestation.\n\nExample\n\nHere is a simple example to briefly demonstrate the process of deployment and invocation from different perspectives in our system.\n\n•Deployment: Suppose a user needs to deploy a private contract to ShadowZone. He/She first compiles the code and puts the binary to TEE-DS through the user client. TEE-DS will generate a pair of keys, bind them with the contract and transfer only the public key back to the user. The user client then uploads identification information of the contract (including the public key and the hash of binary, etc.) to the bounty contract. Now the contract is publicly available.\n\n•Invocation: Once the user needs to invoke his/her private contract, he/she sends an invocation request (including arguments) to the bounty contract with a sum of remuneration. A worker client will get the arguments from the bounty contract and get the private contract’s binary from the TEE-DS with the public key as its ID. It then loads the binary to its hardware enclave and executes using the arguments to get a return value. After that, it sends the new state of the private contract to TEE-DS, which will be held at this moment. The worker then makes a response (including the return value and signature, etc.) and sends it to the bounty contract. The bounty contract will verify the response to ensure that it is generated by correct contract, states, and arguments in real hardware enclave before transferring the remuneration to the worker. Once TEE-DS confirms that the execution has been acknowledged by the bounty contract, it will update the states of the private contract, which finishes the process of one invocation.\n\nAs shown in the example, the EOS blockchain ensures the availability (a private contract will eventually get executed), and the integrity (the result cannot be modified), while the hardware enclave is used to protect privacy. There are many challenges unlisted, e.g., how to design a protocol and key management to defend against attacks like rollback and impersonation, how to minimize the trust on the manager in a second-price auction, which will be described in the following sections.\n\nDesign\n\nIn this section we present the design of ShadowZone. We first describe the three major parts of ShadowZone: the bounty contract (Subsection [subsec:bounty-contract]), the shadow contract (Subsection [subsec:shadow-contract]) and the TEE-DS (Subsection [subsec:tee-ds]) and then introduce the detailed protocol (Subsection [subsec:protocol]).\n\nBounty Contract\n\nBounty contract is a native smart contract deployed on the EOS. Its major responsibility is to perform the public portion of deployment, invocation and verification of private contracts. Sometimes it needs to generate transactions to handle the settlement. It maintains two lists: a contract list and a todolist.\n\nEach entry in the contract list represents a private contract. It contains (1) the contract’s ID (as the primary key), (2) the contract’s public key, (3) a version number, (4) an owner list, (5) the hash of the contract’s persistent state, and (6) the balance of the contract. Once the bounty contract receives a deploying request, it will construct a new entry and add it into the contract list, and the invocation will update the hash value and increase the version number. The contract list can be used to record and verify the state of private contracts but does not expose any information about the core business logic. Users can deposit funds into a private contract by sending the corresponding tokens to bounty contract through deploy transaction or invoke transaction (described in Subsection [subsec:protocol]). The bounty contract records the funds as the balance of a contract. When the result of an invocation is a settlement, the bounty contract will check if the balance is enough before performing the transfer. It is worth noting that the bounty contract only records the total balance of the contract. The detailed distribution of this sum money is decided by the contract itself.\n\nThe todolist serves as a task pool. Users publish invocation tasks into the todolist to allow workers to bid the task. Each entry represents an invocation request, which contains (1) the task ID (as the primary key), (2) the contract’s public key, (3) the encrypted arguments, (4) the remuneration offered by the user, (5) the state (e.g.,TODO or FINISHED), and (6) the encrypted return value. Only one worker can gain the remuneration (typically the first), which is guaranteed by the EOS.\n\nThe bounty contract is the key component of our system. Users and workers communicate indirectly through the bounty contract. Thus, the integrity and the availability of operations on private contracts like deployment and invocation are ensured by the public blockchain.\n\nShadow Contract\n\nWe propose to build a confidential environment for smart contract execution using hardware enclave, but it is not enough to just deploy the native EOS contract directly because only the process of the execution can be hidden, while the information outside such as the call arguments and return values is still exposed.\n\nTo this end, we introduce Shadow Contract, a re-design of the native EOS smart contract. Shadow Contract uses a contract gate to isolate the core business logic of the smart contract. The contract gate is loaded by the worker client before the execution of smart contracts, endowed with the private key of the smart contract. The contract gate has two primary functionalities: decrypting arguments and generating the response. The two functionalities are independent of the contract code, which means the contract gate can be compatible with any private contract.\n\nTo preserve the privacy of the call arguments, users need to encrypt them with the public key of the contract before sending them to the bounty contract. Before execution, the contract gate first decrypts the arguments and then invokes the target function with the plaintext.\n\nAfter the execution, a response is required to put back to the bounty contract. A response includes the execution’s return value, the version number before the execution, the hash of the contract’s state after the execution, and the settlement information. What is more, an invocation verification signature (IVS) is required to attached to the response.\n\nIVS is used for verifying whether the contract has been executed correctly inside an enclave. The contract gate signs the response along with thehash of call arguments and the worker’s ID by the secret key of the contract to generate IVS. The encryption can only be performed after the execution within enclaves. Then the bounty contract can decrypt IVS by the public key of the contract to verify the execution. The inclusion of the hash of call arguments is to ensure that the worker does execute the contract with given arguments. Since IVS contains the ID of the worker, the remuneration will be sent to the right worker even when a malicious attacker captures IVS and resents it to the bounty contract using his/her own EOS account.\n\nThe return value of the execution is required to be sent back to the user without exposure. To this end, the user needs to provide another symmetric key along with the arguments and encrypt them together with the public key of the contract. The contract gate will encrypt the return value with this key and put the cipher-text into the response, which will then be put back to the bounty contract and only the user can decrypt it.\n\nWhen a function is to trigger a settlement on the EOS, it will return a transaction-type object which the contract gate will put into the response. If a response contains settlement information, the bounty contract will generate an EOS transaction to transfer the money.\n\nBesides the above-mentioned data, the contract gate also puts the hash of the contract state after execution into the response which is used as an attestation for off-chain contract transfer.\n\nTEE-DS\n\nTEE-DSTEE-DS is a peer-to-peer network consisting of many worker clients. It serves as a distributed storage of private contracts which can provide high reliability against malfunction. The secrets (e.g., the code, data and private key) of a private contract are protected by hardware enclave, which guarantees the confidentiality.\n\nAdmission Mechanism: Anyone runs the worker client inside an enclave can join the TEE-DS as a worker. To get permission, the expectant worker needs to connect one of the approved workers and offer a CPU-signed statement that he/she is executing a particular enclave. Once the statement is certified, which is known as remote attestation, the expectant worker can then join the network, get the current network constitution and synchronize data from other workers.\n\nSynchronization Mechanism: After a worker performs an invocation of a private contract, he/she needs to broadcast the updates to other workers. However, some workers may publish different updates of the same contract simultaneously. This happens for several reasons: (1) the states before invocation are different; (2) the invocation requests they choose are different; (3) there are some malicious actions. We utilize the consensus on the blockchain to evade conflicts in TEE-DS. When a worker sends the response of an invocation to the bounty contract, he/she must specify the version number before the execution and the hash of the contract’s state after the execution.\n\nProtocol\n\nThe ShadowZone protocol operates in two scenarios: 1) contract deployment, and 2) contract invocation. Figure. 2 shows the process. Just like smart contract systems based on public blockchains, our current system does not support withdrawal mechanisms unless they have been coded in the contract. Considering the irreversibility and nonrepudiation, a contract cannot be stopped from the outside once deployed. The following is a detailed description of the process of these two scenarios. For simplicity, we ignore mining fees in this subsection, although they can be supported in the implementation.\n\nContract Deployment\n\nThe first scenario of the ShadowZone protocol is contract deployment, as shown in the Fig. 2-A. Similar to using EOS natively, users write the business logic of their private contracts on their clients using native languages (like C/C++), then compile the code, deploy them onto the TEE-DS, and meanwhile upload the identification information (e.g., the hash of the code) to the bounty contract.The final purpose of the deployment is to generate an asymmetric key pair, of which the private key is only kept by the enclave, so that the subsequent invocation can be protected by the public key directly without establishing a secure communication channel.\n\nA1. First, the user sends the binary code to TEE-DS through a secure channel, which is established through remote attestation and protected by a Key〖_session〗 which is used for encrypting data in the session. Once the code is received, TEE-DS will generate an asymmetric encryption key pair(based on the RSA algorithm): Key〖_(c_p)〗 and Key〖_(c_s)〗 (p for public and s for secret), which is unique for each contract. Then TEE-DS sends Key〖_(c_p)〗 back to the user.\n\nA2. After receiving Key〖_(c_p)〗, the user will upload the identification information to the bounty contract, essentially announcing the existence of a new private contract. The information includes: 1) Key〖_(c_p)〗, 2) the owner list (the user’s public address as default), and 3) the hash of the binary code. This is done by the cleos, which generates a deploy transaction containing the information and sends it to the bounty contract. The bounty contract then creates a new contract record in its contract list with the identification information, sets the version number to 0, and sets the state to DEPLOYED.\n\nA3. At last, after the deploy transaction is acknowledged, the code of the private contract along with the key pair will be broadcasted to all other workers in TEE-DS.\n\nContract Invocation\n\nOnce a private contract has been deployed, users can invoke it just like invoking native EOS contracts. The procedure is shown in the Fig. 2-B.\n\n\n\nB1. A user initiates an invocation request through its user client. Similar to the native contract invocation in EOS, the user must specify the contract’s Key〖_(c_p)〗, the remuneration and the corresponding parameters including the function name and call arguments.\n\nB2. The user client will process the request: 1) adding the timestamp into the request body, 2) generating a secret key Key〖_req〗 which is only used for this request and adding it into the request body, and 3) using the Key〖_(c_p)〗 to encrypt the request except for the remuneration, then send the data to the e.\n\nB3. The cleos generates an invoke transaction including the contract’s Key〖_(c_p)〗, the encrypted request and the remuneration, which is sent to the bounty contract.\n\nB4. Once the bounty contract receives the invoke transaction, it first verifies the identification to ensure that the contract exists and the request is from one of the owners of the contract. It then adds a new entry with the information included in the invoke transaction into the todolist marked as TODO, and transfers the remuneration into its account simultaneously.\n\nB5. After the invoke transaction is acknowledged, workers can see the executory tasks. They can choose any task and get the related information including Key〖_(c_p)〗 and encrypted request from the bounty contract.\n\nB6. By using Key〖_(c_p)〗, a worker can ask the TEE-DS for the contract’s code and load the contract into its enclave along with the encrypted request. Inside enclave, the contract gate first decrypts the request to get the arguments and the Key〖_req〗, and then executes the specified function.\n\nB7. If the function exits normally, the contract gate will broadcast the modification of the contract’s persistent state to other workers in TEE-DS and then generate a response including the following parts:1) the version number of the contract before the execution, 2) the hash of the contract’s state after the execution, 3) the return value (if the function has one) which is encrypted by Key〖_req〗, 4) the settlement information (if the function has one), and 5) the IVS (described in Subsection [subsec:shadow-contract]). The worker client then sends the response back to the bounty contract and the bounty contract can verify the validity of the IVS with Key〖_(c_p)〗 to ensure that this worker has completed this task correctly. After the verification, the bounty contract updates the entry in the todolist, marking it as FINISHED and filling the return value if any, and updates the information of the contract including the version number and the hash of contract state. Then the user can fetch the return value and decrypt it by Key〖_req〗. If the result is marked as a settlement, the bounty contract will generate a settlement transaction with the settlement information in the response. The first worker to finish it will obtain the remuneration.\n\nB8. Once the result is acknowledged by bounty contract, the other workers in TEE-DS will accept the modification.\n\nUse Cases\n\nIn this section we introduce some use cases to explain how we can use the ShadowZone to preserve the privacy of smart contract.\n\nProtecting Simple Vote\n\nWe first implement a simple vote example to show the confidentiality of private contract. The scenario is that some people want to start a vote between themselves by a smart contract on the EOS, but they do not want to expose the content of this vote to the public. In our implementation, we assume that the participants know and trust each other and create the vote contract together. Algorithm [code:vote] shows the approximate logic of the example but not the detail.\n\nFirst, all the voters agree on the voting code (private contract). Then they deploy the contract as described in Section [subsec:protocol], which can be performed by any one of the participants. After the deployment is acknowledged, each participant can invoke the cast() function to cast their ballot. The cast() operation will be executed by workers using hardware enclave. Any participant can invoke the check function to query the current state of the vote at any time.\n\nIt is noteworthy that the whole process of the vote including the cast and the check is hidden and only the participants can view it. The workers can get involved in executing but they will never know what indeed happens inside the contract. If a participant is malicious in this case, he/she can only leak the vote result but not the detailed information.\n\n[t]0.98 [1]⊳ #1\n[H] [code:vote]\n[1] $\\boldsymbol{vote} \\gets \\{0,0,0,0,0\\}$ $\\boldsymbol{vote}[option]++$\n\nProtecting Transaction Details\n\nWe consider the following scenario: a seller and a buyer have a contract with a certain price and quantity of some commodity. The key secret of the scenario is the detail of the purchase including the price, the quantity and maybe some promotion strategy in some complicated cases, while the result (i.e., the total money transferred) which will eventually be reflected on the EOS is not protected. The approximate code is shown in Algorithm [code:transaction]. To ensure the efficacy of the contract, the buyer is required to deposit some funds as balance before making a purchase, which is done by invoking the deposit() and send the corresponding tokens to the bounty contract. Once the both parties are prepared to make a deal, they can invoke the purchase() with the negotiated price and quantity. The invocation of purchase() requires to be signed by both parties. Either party can invoke the settlement() for a refund. The bounty contract will check the total amount of refund before generating the settlement transaction.\n\nThe example can be extended to a multi-participants scenario which can hide the detail of transactions among the participants and do settlement regularly. Although the transfer of tokens is public on EOS, it is acceptable in many cases because the privacy of transaction details is much more important. And users can do a settlement after a number of transactions, which mixes up the results of these transactions and makes it difficult to resolve.\n\n[t]0.49 [1]⊳ #1\n[H] [code:transaction]\n[1] int seller_addr int buyer_addr int seller_blc int buyer_blc\nbuyer_blc+=amount\nbuyer_blc-=amount*price seller_blc+=amount*price\nsettlement←new Transaction() settlement.add(seller_addr,seller_blc) settlement.add(buyer_addr,buyer_blc)\n[t]0.49 [FOR]ForEach[1] #1 [1]⊳ #1\n[H] [code:second-price]\n[1] Map⟨int,int⟩ $\\boldsymbol{balances}$ int bestPrice←-1 int secondPrice←-1 int winner←-1 int seller←-1\n$\\boldsymbol{balances}.clear()$ seller←addrOfSeller\n$\\boldsymbol{balances}.insert(addr,funds)$\nsecondPrice←bestPrice bestPrice←price winner←addr\nsecondPrice←price\nsettlement←newTransaction settlement.add(seller,secondPrice) $settlement.add(winner,\\boldsymbol{balances}[winner]$ -secondPrice)\nsettlement.add(b.first,b.second)\n\nSecond-Price Auction\n\nIn a second-price auction, the bidder who offers the highest price wins but pays the second highest price. The essential element of second-price auctions is that bidders offer bids without knowing the bid of other bidders.\n\nWe implements an example auction program using the ShadowZone, as shown in Algorithm [code:second-price]. The code above is an approximation of our real implementation. There are two different roles in this case: the manager and the bidders. First the manager can start an auction with the seller’s address so that the fund can be transferred to the seller immediately once the auction ends. After the auction starts successfully, each bidder can offer their price by invoking bid(). Since the tokens transfer on EOS is public, from which the bid price could be inferred, so we allow a user to obfuscate the real price by sending an arbitrary (but more than the real price) amount of tokens to bounty contract, and the excess will be returned to the user after the auction ends. The manager will decide when to conclude the auction and invoke the conclude() to transfer the money from the winner to the seller and refund other bidders’ funds.\n\nShadowZone guarantees the input independent privacy that each user can never see others’ bids even after the auction. In this way, users’ bids are independent of others’ bids. Also, the manager’s function is limited to starting and terminating the auction. Even if the manager is malicious, he/she cannot disclose any information of the auction.\n\nSecurity Analysis\n\nIn this section, we discuss how ShadowZone mitigates potential attacks. Each party may send, drop, modify, record arbitrary messages in the protocol at any time during the contract deployment and invocation. So we discuss and evaluate the security of ShadowZone.\n\nMalicious Worker: During the contract deployment, an attacker may pretend to be a worker and defraud the user of the code of his/her private contract. To defend this attack, remote attestation is required before the communication. The worker must provide a report which is signed by hardware-protected key to prove that he/she runs the unmodified worker client in enclave indeed. Even if the attacker has compromised the network, he/she cannot spy or tamper any message because the communication between the user and the worker is based on a secure channel which is protected by a session key after remote attestation. If the user who performs the deployment is dishonest, he/she cannot get any more privileges than other users in that the secret key of the contract is generated and kept by enclaves.\n\nStealing Invocation Information: The contract invocation is mediated by bounty contract which is publicly visible on the EOS. An attacker may try to steal the invocation information by spying the bounty contract. But this will not work because all the secrets of invocation are encrypted. The user encrypts the arguments with the public key of the contract, and oppositely, the enclave will encrypt the corresponding return value by another key which is transferred along with the arguments by the user. So the attacker can only see the inessential information such as the amount of the remuneration. Since the secrets of an invocation are fully hidden except for the invoker, ShadowZone can guarantee the personal privacy without any exposure risk from a malicious manager, which is a potential concern of some other private blockchain system such as Hawk [5].\n\nIntegrity of Invocation: There are potential attackers including dishonest workers who want to compromise the integrity of the invocation by tampering invocation requests or committing fake results. Since the invocation requests are acknowledged on EOS, attackers can manipulate them only by controlling more than half of the state of EOS, which is considered impossible. The response of an invocation includes IVS which contains the hash of corresponding arguments and is signed with the contract’s private key by the enclave. The bounty contract can check the IVS with the contract’s public key to verify that the worker executes the contract correctly with the given arguments inside an enclave. So no one can fake a response to the bounty contract.\n\nReplay Attack: To protect the private contract from the replay attack, each message will be endowed with a timestamp. When the bounty contract receives an invoke message, it will first check the timestamp and refuse the old requests. The communication between users and workers will be protected in the same manner. Furthermore, the response of an invocation must specify the corresponding task in the todolist of the bounty contract. Thus the only one response will be accepted by the bounty contract for one task. It is worth noting that the worker’s address inside the IVS decides who will gain the remuneration so it is no use for attackers to intercept the IVS.\n\nWe implement ShadowZone using Intel SGX which guarantees the integrity and confidentiality of the execution. Intel SGX can protect the execution of smart contracts from attackers on the same host, even those who compromise the OS or control physical access. All the data of the contract is encrypted except inside the enclaves. Malicious workers or attackers on the same machine can only stop service, modify or record the encrypted messages, which will not harm the integrity and confidentiality of our system. For the attacks which exploit the hardware vulnerabilities (e.g., Meltdown and Spectre CPU security flaws), Intel has submitted patches to fix the problems. Actually, most side-channel attacks require multiple attempts to steal information from the enclave, so we can prevent these attacks effectively by limiting the execution times. This is a good idea we will probably implement in the future.\n\nIt is worth noting that our protocol is not Intel specific and we can implement out system easily on the base of another trusted hardware.\n\nDiscussion\n\nAvailability: Currently, the availability of a blockchain system depends on the participation to a large extend. Similarly, ShadowZone needs a number of workers to comprise the TEE-DS and provide services for private contracts. A nascent system always lacks user participation and few workers are willing to work, and it will take a long time to develop to maturation. So we choose to build our system on the base of the mature EOS system and make use of its availability without any modification to the EOS.In addition to EOS, we also need to establish a public platform to provide related services such as the client download (both the user client and the worker client) and maintaining the information of TEE-DS. With these services, anyone who has a machine with enclave can download a worker client, and then find and join the TEE-DS as a worker. In the beginning, we may build the TEE-DS with few nodes as a test version. With the broad participation of EOS, we anticipate that the requirement of private smart contracts and the remuneration will draw more users and workers in.\n\nIncentive Mechanism: In current design of ShadowZone, workers only get remuneration for executing contracts. But there is no incentive mechanism for storing private contracts. Thus some utilitarian workers may stop their machines immediately after one task, and keep waiting until new tasks are sent to bounty contract. Since the remuneration is only gained by the fastest worker, the time of execution is closely connected with profit. If a worker only executes contracts without storing them, the latency of synchronizing data (e.g., binary of contracts) from other workers will add more overhead to execution time and reduce expected profit, which motivates workers storing private contracts locally. Furthermore, the worker client is executed as a whole and the response is generated only after all the work is done (including spreading data to other TEE-DS nodes), which is ensured by enclave, and hence no worker can perform part of the execution to maximize profit.\n\nWorkload Measurement: Ethereum provides a gas mechanism, which endows every operation with a fixed price. With Ethereum’s runtime environment (EVM), the workload of each execution can be measured and then the gas consumption can be calculated with the gas price. The execution will exit immediately once the gas is run out. This mechanism can prevent DoS attacks such as requests for executing some infinite loop within smart contracts. In our current implementation, the contract is executed in the native environment without a similar monitoring mechanism. To solve this problem, we can measure the workload by execution time. Each invocation task will be endowed with a timeout corresponding to the amount of remuneration. If some workers finish the execution before timeout, the first one will win. If the workload of the execution is so heavy that no worker can finish it within before timeout, workers can still gain the remuneration with a measurement to prove that the execution indeed exits after a timeout. The measurement can be generated by enclave, which is similar to Proof of Elapsed Time (PoET) used by Hyperledger Sawtooth .\n\nConclusion\n\nWe introduced ShadowZone, a system that addresses a major concern about the current smart contract systems based on the blockchainthe lack of confidentiality. Unlike the pure and computationally complex solution (such as Zcash) and the reconstructed licensing chain (such as Coco), ShadowZone can guarantee the confidentiality of existing public blockchains like EOS without any modification. ShadowZone separates the process of the verification of a smart contract from the private execution, and only puts the verification onto the blockchain, without revealing any secrets. The actual logic of smart contracts is executed by off-chain TEE and the communication is encrypted by a secret key only kept by the TEE.\n\nWe used a native EOS smart contract named bounty contract to handle the publishing, verification and settlement of a private contract, which ensures the integrity and coerciveness. Then we presented the applicability by case studies. We believe that ShadowZone is a practical approach to building confidential public smart contract systems.",
"json_metadata": "{\"tags\":[\"eos\",\"smart\",\"contract\"],\"image\":[\"https://cdn.steemitimages.com/DQmWNCqMBbw17exLurLtrDx3rUVATbsdA6jmZjaS5zW9cur/e39f9c21-32e6-4b70-aa9d-ce64263dd04b-uarch-0.png\",\"https://cdn.steemitimages.com/DQmaMDXhNTY5W8t9qRhLyu76gAJ4AmHw8Uax6CfzrwfeW1c/35974c2a-2d26-4658-9237-79b152e56e78-uprotocol-0.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/06/18 03:42:06
2018/06/18 03:42:06
| parent author | eosbeijing |
| parent permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| author | allnatural |
| permlink | re-eosbeijing-private-smart-contract-on-public-blockchain-shadowzone-whitepaper-20180618t034205197z |
| title | |
| body | Go here https://steemit.com/@a-a-a to get your post resteemed to over 72,000 followers. |
| json metadata | {"tags":["eos"],"links":["https://steemit.com/@a-a-a"],"app":"steemit/0.1"} |
| Transaction Info | Block #23419192/Trx a055b39c39a40cd31f295652740b757e889b8255 |
View Raw JSON Data
{
"trx_id": "a055b39c39a40cd31f295652740b757e889b8255",
"block": 23419192,
"trx_in_block": 10,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T03:42:06",
"op": [
"comment",
{
"parent_author": "eosbeijing",
"parent_permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"author": "allnatural",
"permlink": "re-eosbeijing-private-smart-contract-on-public-blockchain-shadowzone-whitepaper-20180618t034205197z",
"title": "",
"body": "Go here https://steemit.com/@a-a-a to get your post resteemed to over 72,000 followers.",
"json_metadata": "{\"tags\":[\"eos\"],\"links\":[\"https://steemit.com/@a-a-a\"],\"app\":\"steemit/0.1\"}"
}
]
}eosbeijingpublished a new post: private-smart-contract-on-public-blockchain-shadowzone-whitepaper2018/06/18 03:41:39
eosbeijingpublished a new post: private-smart-contract-on-public-blockchain-shadowzone-whitepaper
2018/06/18 03:41:39
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | private-smart-contract-on-public-blockchain-shadowzone-whitepaper |
| title | Private Smart Contract on Public Blockchain:ShadowZone WhitePaper |
| body | ShadowZone: Private Smart Contract on Public Blockchain Abstract Blockchain is becoming popular as a distributed and reliable ledger which allows distrustful parties to transact safely without trusting third parties. Emerging blockchain systems like EOS support smart contracts where miners can run arbitrary user-defined programs. However, one of the biggest concerns about the blockchain and the smart contract is privacy, since all the transactions on the chain are exposed to the public. In this paper, we present ShadowZone, a system that leverages hardware enclave to ensure the confidentiality of smart contracts while keeping the integrity and availability based on existing public blockchains like EOS. ShadowZone establishes a confidential and secure platform protected by Trusted Execution Environment (TEE) off the public blockchain for the execution and storage of private contracts. It only puts the process of verification on the public blockchain. The private computation runs off the blockchain with a protocol token called "SZT", which workers earn by providing correct and confidential computation for users. This creates a powerful incentive for workers who own computation devices with TEE to participant into the network. Users can deploy and execute their smart contracts on ShadowZone just like using existing smart contract systems (e.g., Ethereum and ESOIO), while maintaining the confidentiality. ShadowZone also achieves availability and robustness by replicating data of private contracts on an off-chain network called TEE-DS. The data stored in TEE-DS is encrypted with secret keys which are only held by TEE and the data transmission channel between any two nodes is protected by a secure session key. ShadowZone proposes a complete solution for executing private smart contracts on public blockchains. We provide a design of our system including a protocol of the cryptographic communication and verification and show the applicability and feasibility of the ShadowZone by various case studies. Introduction Blockchain, proposed as an underlying technology of cryptocurrency like Bitcoin, allows users to transfer currency over a distributed, public and trust-less network. Over the last few years, blockchain systems evolved to support smart contracts which can run custom Turing-complete code on the blockchain, such as Ethereum and EOS. Today, public cryptocurrencies are widely used. On Ethereum, more than 10 million ethers are held by more than 1 million smart contracts. On these blockchain systems, all the participants have the entire log of the system and reach a distributed consensus on the transactions that will modify the state of the chain. This high degree of replication and the strict consensus mechanism ensure integrity and availability but make all data public, which brings the deficiency in confidentiality. In this paper, we present ShadowZone, a system that enables private smart contract based on public blockchains. Our idea is to combine hardware enclaves and public blockchains to offer confidentiality of smart contracts while keeping the integrity and availability. On the public blockchain, we create a public smart contract named "bounty contract" which performs the process of deployment and verification and stores the metadata of private contract. We also introduce an off-chain distributed storage named TEE-DS to store binary and states of private contracts. The entire TEE-DS is protected by hardware enclaves so all the data it stores will not be leaked or tampered with. Users can then publish the deployment and invocation request and the remuneration on the bounty contract to draw workers (who provide off-chain execution environment) in. If a worker wants to execute a private contract, it needs to run a worker client in hardware enclave, which will get the binary and state from TEE-DS to execute. After the off-chain execution, the enclave will generate a particular signature and put it back to the EOS blockchain, which is used to verify the correctness of the execution. Since we just put the metadata (like hash of binary, public key, state versions) and the encrypted data (like input and output) of ShadowZone to the bounty contract, there is no need for any modification to the underlying protocol of existing blockchain systems. Meanwhile, many workers comprise a distributed storage to improve the reliability and guarantee the availability. We also implement a prototype of ShadowZone with the Intel SGX on EOS blockchain network and show the applicability with three use cases. This work: •presents ShadowZone, a confidential, distributed, trust-less off-chain smart contract system clinging to existing public blockchain networks like EOS without any modification. •describes the detailed architecture and protocol of ShadowZone. •shows the applicability of ShadowZone with three use cases and demonstrates the security and availability of ShadowZone. Background In this section, we provide background on the technologies that underpin ShadowZone. We first give a short overview of the blockchain and smart contracts, explore the lack of confidentiality of current smart contract systems, then introduce the hardware enclave and finally describe the threat model of ShadowZone. Blockchain A blockchain typically serves as an open, decentralized and trustless distributed ledger which is maintained by all participants. Some participants, called miners, form a peer-to-peer network and all have the full copy of the blockchain. They collect transactions signed by users. After validating the signatures, they packed these transactions into a block. Each block contains the information of the transactions as well as the hash of the previous block, which organizes the data as a sequential list of blocks, called a blockchain. The blockchain is a distributed system designed for Byzantine fault tolerance. Each transaction which may modify the state of the chain will be broadcasted to all miners in the network. Once a block is generated, all the miners need to achieve a consensus on whether to accept it or not. Each miner can decide the block’s content arbitrarily, that is to say, he/she can decide which transactions will be packed into the block. Miners can always generate different blocks with the same parent at the same time, which will cause inconsistency called a fork. To solve the bifurcation, an honest miner always chooses to follow the longest branch. If an attacker controls more than 50% of the nodes, he/she can unilaterally generate the branch containing the fake transactions faster than the branch containing the real ones, which causes the double spending problem. To solve this problem, a miner needs to prove that he/she has done a certain amount of work before generating a block. With this proof, known as Proof of Work (PoW), the block is acknowledged to be valid. PoW makes a miner create blocks at the rate related to the proportional of his/her mining power, whichprevents Sybil attack. Smart Contract and EOS The smart contract can trace back to 1996, proposed by Nick Szabo. It is described as "a set of promises, specified in digital form, including protocols within which the parties perform on these promises". The smart contract is usually designed to ensure the execution of a contract and to avoid malicious act as well as unforeseen circumstances. It can minimize the utilization of the trusted third party, which results in the reduction of transaction cost, and potentially circumvent censorship, collusion and counter-party risk. Blockchain makes smart contracts possible. Based on the blockchain, smart contracts usually take the form of a general-purpose program. Users can write and deploy any Turing-complete program on the blockchain network. The most emerging smart contract implementation is EOS. An EOS smart contract is a user-generated application based on WebAssembly (WASM). WASM is a web standard with widespread support of Google, Microsoft, Apple and others. EOS currently uses clang/llvm with C/C++ compiler as its toolchain for building smart contracts, since C++ is the best language for developing high-performance and secure smart contracts. In EOS, a smart contract is registered on the blockchain and executed on EOS nodes. The smart contract defines the interface (actions, parameters, data structures) and the code that implements the interface. The code is compiled into a canonical bytecode format for EOS nodes to retrieve and execute. The blockchain stores the transactions (e.g., legal transfers, game moves) of the contract. Once a smart contract is deployed, it will be executed autonomously. Even its creator cannot stop the execution or modify the code arbitrarily. An EOS smart contract consists of a set of action and type definitions. Action definitions specify and implement the behaviors of the contract. The type definitions specify the required content and structures. EOS actions operate primarily in a message-based communication architecture. A client invokes actions by sending (pushing) messages to nodeos. This can be done using the cleos command. It can also be done using one of the EOS send methods (e.g. EOS::action::send). nodeos dispatches action requests to the WASM code that implements a contract. That code runs in its entirety, then processing continues to the next action. The wide public participation of smart contracts and the strict consensus mechanism ensure the enforcement, integrity and availability of smart contracts. However, the lack of privacy becomes a pain point that restricts the applications of smart contracts in some privacy-sensitive scenarios. Hardware Enclave Trusted executed environment (TEE) is a new feature provided by recent commodity CPUs. It creates a secure area which guarantees the integrity and confidentiality of code and data inside. TEE serves as an isolated environment running in parallel with OS. It provides a high-level security for software inside by reducing the trusted computing base (TCB) to only the CPU. Applications running in TEE have secure memory and cryptographic operations to resist attacks from other applications, even the privileged software such as OS or hypervisor. Our design is general-purpose and applies to any TEE that has above features. In this paper, our implementation is based on Intel’s Software Guard Extensions (SGX) . Intel SGX provides a trusted and isolated environment called enclave. With this hardware feature in CPU, users can deploy their softwares in a remote host with integrity and confidentiality unless CPU package was hacked. An application running inside an enclave is protected from other malicious software including the operating system. SGX provides remote attestation which allows a remote host to verify the application running in the enclave and generate a secure channel to communicate with it. In the process of initiation of an enclave, the CPU measures the trusted code and the trusted memory within the enclave and produces a hash based on all memory pages known as measurement. Then the software inside the enclave can acquire a report which contains the measurement and other supplementary data such as the public key. This report is signed by a hardware-protected key in CPU to prove that the measured software is running in SGX indeed. The remote attester can then verify the report with Intel Attestation Service (IAS) which can certify that the signature is valid and the corresponding report is generated from authentic CPUs. Threat Model Our threat model assumes that multiple parties mutually distrust each other. They are potentially malicious and may try to steal information of smart contracts, modify the execution flow and deviate from the protocol for their benefit. Each party may send, drop, modify, record arbitrary messages in the protocol at any time during the contract deployment and invocation. Any party may crash and stop responding entirely. We assume that the blockchain is trustable and available all the time. The information on the blockchain is tamper-resistant but public to everyone. We also assume that network adversaries can intercept the communication between parties, but they cannot control the whole network so that the communication can be eventually established, for example, the user can send a request to the blockchain network and get the response. We trust the hardware enclave, its manufacture (like Intel) and the remote attestation service. As long as a node passes the remote attestation, it will be able to execute the shadow contract within its enclave. The rest of the system, including the other software stacks (outside the enclave) and the hardware is not trusted. Side-channel attacks against enclaves and DoS attacks are not considered in this paper. Our system also relies on the privacy of private key. Each private contract has a unique private key only possessed by the enclave. The private key is used to generate the attestation that the contract has been executed correctly. If an attacker steals the private key in some way, he/she can get paid from the EOS without executing the contract, which could compromise the integrity but not privacy. System Overview The goal of ShadowZone is to provide a confidential platform to executing private smart contracts which can be integrated with existing public blockchain such as EOS. Specifically, the privacy of a smart contract consists of the following three parts. •Privacy of the specification of a smart contract. The source code of a private contract must be hidden during the deployment and subsequent process of execution and synchronization. •Privacy of the execution of a smart contract. Once a private contract is invoked, the executing process on a worker client cannot be spied and the call arguments, as well as the return values should be hidden during the execution. •Privacy of the state of a smart contract. The internal state of a private contract may contain user’s secrets and can reflect information of recent transactions. So it should not be published on the blockchain. To guarantee the confidentiality of the code and data of a smart contract, a secure channel between a user and TEE-DS will be established before transferring the contract. The contract will be encrypted before transferring and can only be decrypted inside the corresponding enclave. To preserve the privacy of execution, we only put the information of invocation and verification onto the blockchain. During the deployment of a private contract, TEE will generate a key-pair for this contract and publish the public key. The invocation arguments are encrypted with the contract’s public key which can only be decrypted within the enclave. The return value will be encrypted by a user-provided key which is delivered along with call arguments. In the entire process, the information of the execution is encrypted except inside the enclave. Anyone even the worker cannot leak the internal executing state.To guarantee the confidentiality of the persistent state of a private contract, ShadowZone stores only the hash of the ledger on the EOS instead of all data. The data can only be managed and viewed inside enclaves. Due to the limited secure memory of enclave like SGX, data could be moved to untrusted memory or disk, and sometimes need network transmission for backup or synchronization. Before writing out the data, ShadowZone will encrypt all data with the hardware key which is only kept by CPUs. This ensures that the data can only be accessed by authenticated users through ShadowZone and no one outside can view or manipulate the persistent state. System Components Figure.1 shows the architecture of ShadowZone. ShadowZone can be broken down into several subcomponents. •Bounty Contract. A bounty contract is a native smart contract deployed on blockchain directly, serving as the public portion of ShadowZone. •User Client. A user client provides interfaces to end users. It does not require enclave to execute. •Worker Client. A worker client is responsible for the execution and maintenance of private contracts. It needs to run inside enclaves. •TEE-DS. TEE-DS (Distributed Storage) serves as a distributed network which stores private contracts.  We create a smart contract named bounty contract on the EOS blockchain network which serves as a platform for publishing private contract, grabbing execution task and remuneration settlement. Bounty contract is a public contract that every participant in EOS can see and use. A user can deploy his/her private contracts and then invoke them like ordinary contracts via the bounty contract. On the other side, workers with TEE-enabled devices can look up executory tasks in the bounty contract, get the parameters, do the computation, and finally commit the result of the execution. A user client provides interfaces including contract deployment and invocation for users. It communicates with bounty contract through cleos, command line interface to interact with the EOS blockchain. A user client can be launched without TEE, so it is only trusted by its user. A worker client is used for fetching executory tasks from bounty contract, getting code and data of private contracts from TEE-DS, executing contracts, committing results and updating the persistent state of contracts. The main part of a worker client, which does the contract correlation processing, runs inside enclaves. It communicates with bounty contract through cleos. Furthermore, a worker client also serves as a server node in TEE-DS. Many worker clients comprise TEE-DS, a peer-to-peer network storing the code and data of private contracts. In the process of execution of contracts, all the nodes maintain consistency by Paxos-like consensus algorithm. For a certain contract, different workers store the same data but encrypt it with different secret keys. Enclaves maintain the consistency of the unencrypted logical data. The data synchronization is performed on the safe channel between two enclaves after the remote attestation. Example Here is a simple example to briefly demonstrate the process of deployment and invocation from different perspectives in our system. •Deployment: Suppose a user needs to deploy a private contract to ShadowZone. He/She first compiles the code and puts the binary to TEE-DS through the user client. TEE-DS will generate a pair of keys, bind them with the contract and transfer only the public key back to the user. The user client then uploads identification information of the contract (including the public key and the hash of binary, etc.) to the bounty contract. Now the contract is publicly available. •Invocation: Once the user needs to invoke his/her private contract, he/she sends an invocation request (including arguments) to the bounty contract with a sum of remuneration. A worker client will get the arguments from the bounty contract and get the private contract’s binary from the TEE-DS with the public key as its ID. It then loads the binary to its hardware enclave and executes using the arguments to get a return value. After that, it sends the new state of the private contract to TEE-DS, which will be held at this moment. The worker then makes a response (including the return value and signature, etc.) and sends it to the bounty contract. The bounty contract will verify the response to ensure that it is generated by correct contract, states, and arguments in real hardware enclave before transferring the remuneration to the worker. Once TEE-DS confirms that the execution has been acknowledged by the bounty contract, it will update the states of the private contract, which finishes the process of one invocation. As shown in the example, the EOS blockchain ensures the availability (a private contract will eventually get executed), and the integrity (the result cannot be modified), while the hardware enclave is used to protect privacy. There are many challenges unlisted, e.g., how to design a protocol and key management to defend against attacks like rollback and impersonation, how to minimize the trust on the manager in a second-price auction, which will be described in the following sections. Design In this section we present the design of ShadowZone. We first describe the three major parts of ShadowZone: the bounty contract (Subsection [subsec:bounty-contract]), the shadow contract (Subsection [subsec:shadow-contract]) and the TEE-DS (Subsection [subsec:tee-ds]) and then introduce the detailed protocol (Subsection [subsec:protocol]). Bounty Contract Bounty contract is a native smart contract deployed on the EOS. Its major responsibility is to perform the public portion of deployment, invocation and verification of private contracts. Sometimes it needs to generate transactions to handle the settlement. It maintains two lists: a contract list and a todolist. Each entry in the contract list represents a private contract. It contains (1) the contract’s ID (as the primary key), (2) the contract’s public key, (3) a version number, (4) an owner list, (5) the hash of the contract’s persistent state, and (6) the balance of the contract. Once the bounty contract receives a deploying request, it will construct a new entry and add it into the contract list, and the invocation will update the hash value and increase the version number. The contract list can be used to record and verify the state of private contracts but does not expose any information about the core business logic. Users can deposit funds into a private contract by sending the corresponding tokens to bounty contract through deploy transaction or invoke transaction (described in Subsection [subsec:protocol]). The bounty contract records the funds as the balance of a contract. When the result of an invocation is a settlement, the bounty contract will check if the balance is enough before performing the transfer. It is worth noting that the bounty contract only records the total balance of the contract. The detailed distribution of this sum money is decided by the contract itself. The todolist serves as a task pool. Users publish invocation tasks into the todolist to allow workers to bid the task. Each entry represents an invocation request, which contains (1) the task ID (as the primary key), (2) the contract’s public key, (3) the encrypted arguments, (4) the remuneration offered by the user, (5) the state (e.g.,TODO or FINISHED), and (6) the encrypted return value. Only one worker can gain the remuneration (typically the first), which is guaranteed by the EOS. The bounty contract is the key component of our system. Users and workers communicate indirectly through the bounty contract. Thus, the integrity and the availability of operations on private contracts like deployment and invocation are ensured by the public blockchain. Shadow Contract We propose to build a confidential environment for smart contract execution using hardware enclave, but it is not enough to just deploy the native EOS contract directly because only the process of the execution can be hidden, while the information outside such as the call arguments and return values is still exposed. To this end, we introduce Shadow Contract, a re-design of the native EOS smart contract. Shadow Contract uses a contract gate to isolate the core business logic of the smart contract. The contract gate is loaded by the worker client before the execution of smart contracts, endowed with the private key of the smart contract. The contract gate has two primary functionalities: decrypting arguments and generating the response. The two functionalities are independent of the contract code, which means the contract gate can be compatible with any private contract. To preserve the privacy of the call arguments, users need to encrypt them with the public key of the contract before sending them to the bounty contract. Before execution, the contract gate first decrypts the arguments and then invokes the target function with the plaintext. After the execution, a response is required to put back to the bounty contract. A response includes the execution’s return value, the version number before the execution, the hash of the contract’s state after the execution, and the settlement information. What is more, an invocation verification signature (IVS) is required to attached to the response. IVS is used for verifying whether the contract has been executed correctly inside an enclave. The contract gate signs the response along with thehash of call arguments and the worker’s ID by the secret key of the contract to generate IVS. The encryption can only be performed after the execution within enclaves. Then the bounty contract can decrypt IVS by the public key of the contract to verify the execution. The inclusion of the hash of call arguments is to ensure that the worker does execute the contract with given arguments. Since IVS contains the ID of the worker, the remuneration will be sent to the right worker even when a malicious attacker captures IVS and resents it to the bounty contract using his/her own EOS account. The return value of the execution is required to be sent back to the user without exposure. To this end, the user needs to provide another symmetric key along with the arguments and encrypt them together with the public key of the contract. The contract gate will encrypt the return value with this key and put the cipher-text into the response, which will then be put back to the bounty contract and only the user can decrypt it. When a function is to trigger a settlement on the EOS, it will return a transaction-type object which the contract gate will put into the response. If a response contains settlement information, the bounty contract will generate an EOS transaction to transfer the money. Besides the above-mentioned data, the contract gate also puts the hash of the contract state after execution into the response which is used as an attestation for off-chain contract transfer. TEE-DS TEE-DSTEE-DS is a peer-to-peer network consisting of many worker clients. It serves as a distributed storage of private contracts which can provide high reliability against malfunction. The secrets (e.g., the code, data and private key) of a private contract are protected by hardware enclave, which guarantees the confidentiality. Admission Mechanism: Anyone runs the worker client inside an enclave can join the TEE-DS as a worker. To get permission, the expectant worker needs to connect one of the approved workers and offer a CPU-signed statement that he/she is executing a particular enclave. Once the statement is certified, which is known as remote attestation, the expectant worker can then join the network, get the current network constitution and synchronize data from other workers. Synchronization Mechanism: After a worker performs an invocation of a private contract, he/she needs to broadcast the updates to other workers. However, some workers may publish different updates of the same contract simultaneously. This happens for several reasons: (1) the states before invocation are different; (2) the invocation requests they choose are different; (3) there are some malicious actions. We utilize the consensus on the blockchain to evade conflicts in TEE-DS. When a worker sends the response of an invocation to the bounty contract, he/she must specify the version number before the execution and the hash of the contract’s state after the execution. Protocol The ShadowZone protocol operates in two scenarios: 1) contract deployment, and 2) contract invocation. Figure. 2 shows the process. Just like smart contract systems based on public blockchains, our current system does not support withdrawal mechanisms unless they have been coded in the contract. Considering the irreversibility and nonrepudiation, a contract cannot be stopped from the outside once deployed. The following is a detailed description of the process of these two scenarios. For simplicity, we ignore mining fees in this subsection, although they can be supported in the implementation. Contract Deployment The first scenario of the ShadowZone protocol is contract deployment, as shown in the Fig. 2-A. Similar to using EOS natively, users write the business logic of their private contracts on their clients using native languages (like C/C++), then compile the code, deploy them onto the TEE-DS, and meanwhile upload the identification information (e.g., the hash of the code) to the bounty contract.The final purpose of the deployment is to generate an asymmetric key pair, of which the private key is only kept by the enclave, so that the subsequent invocation can be protected by the public key directly without establishing a secure communication channel. A1. First, the user sends the binary code to TEE-DS through a secure channel, which is established through remote attestation and protected by a Key〖_session〗 which is used for encrypting data in the session. Once the code is received, TEE-DS will generate an asymmetric encryption key pair(based on the RSA algorithm): Key〖_(c_p)〗 and Key〖_(c_s)〗 (p for public and s for secret), which is unique for each contract. Then TEE-DS sends Key〖_(c_p)〗 back to the user. A2. After receiving Key〖_(c_p)〗, the user will upload the identification information to the bounty contract, essentially announcing the existence of a new private contract. The information includes: 1) Key〖_(c_p)〗, 2) the owner list (the user’s public address as default), and 3) the hash of the binary code. This is done by the cleos, which generates a deploy transaction containing the information and sends it to the bounty contract. The bounty contract then creates a new contract record in its contract list with the identification information, sets the version number to 0, and sets the state to DEPLOYED. A3. At last, after the deploy transaction is acknowledged, the code of the private contract along with the key pair will be broadcasted to all other workers in TEE-DS. Contract Invocation Once a private contract has been deployed, users can invoke it just like invoking native EOS contracts. The procedure is shown in the Fig. 2-B.  B1. A user initiates an invocation request through its user client. Similar to the native contract invocation in EOS, the user must specify the contract’s Key〖_(c_p)〗, the remuneration and the corresponding parameters including the function name and call arguments. B2. The user client will process the request: 1) adding the timestamp into the request body, 2) generating a secret key Key〖_req〗 which is only used for this request and adding it into the request body, and 3) using the Key〖_(c_p)〗 to encrypt the request except for the remuneration, then send the data to the e. B3. The cleos generates an invoke transaction including the contract’s Key〖_(c_p)〗, the encrypted request and the remuneration, which is sent to the bounty contract. B4. Once the bounty contract receives the invoke transaction, it first verifies the identification to ensure that the contract exists and the request is from one of the owners of the contract. It then adds a new entry with the information included in the invoke transaction into the todolist marked as TODO, and transfers the remuneration into its account simultaneously. B5. After the invoke transaction is acknowledged, workers can see the executory tasks. They can choose any task and get the related information including Key〖_(c_p)〗 and encrypted request from the bounty contract. B6. By using Key〖_(c_p)〗, a worker can ask the TEE-DS for the contract’s code and load the contract into its enclave along with the encrypted request. Inside enclave, the contract gate first decrypts the request to get the arguments and the Key〖_req〗, and then executes the specified function. B7. If the function exits normally, the contract gate will broadcast the modification of the contract’s persistent state to other workers in TEE-DS and then generate a response including the following parts:1) the version number of the contract before the execution, 2) the hash of the contract’s state after the execution, 3) the return value (if the function has one) which is encrypted by Key〖_req〗, 4) the settlement information (if the function has one), and 5) the IVS (described in Subsection [subsec:shadow-contract]). The worker client then sends the response back to the bounty contract and the bounty contract can verify the validity of the IVS with Key〖_(c_p)〗 to ensure that this worker has completed this task correctly. After the verification, the bounty contract updates the entry in the todolist, marking it as FINISHED and filling the return value if any, and updates the information of the contract including the version number and the hash of contract state. Then the user can fetch the return value and decrypt it by Key〖_req〗. If the result is marked as a settlement, the bounty contract will generate a settlement transaction with the settlement information in the response. The first worker to finish it will obtain the remuneration. B8. Once the result is acknowledged by bounty contract, the other workers in TEE-DS will accept the modification. Use Cases In this section we introduce some use cases to explain how we can use the ShadowZone to preserve the privacy of smart contract. Protecting Simple Vote We first implement a simple vote example to show the confidentiality of private contract. The scenario is that some people want to start a vote between themselves by a smart contract on the EOS, but they do not want to expose the content of this vote to the public. In our implementation, we assume that the participants know and trust each other and create the vote contract together. Algorithm [code:vote] shows the approximate logic of the example but not the detail. First, all the voters agree on the voting code (private contract). Then they deploy the contract as described in Section [subsec:protocol], which can be performed by any one of the participants. After the deployment is acknowledged, each participant can invoke the cast() function to cast their ballot. The cast() operation will be executed by workers using hardware enclave. Any participant can invoke the check function to query the current state of the vote at any time. It is noteworthy that the whole process of the vote including the cast and the check is hidden and only the participants can view it. The workers can get involved in executing but they will never know what indeed happens inside the contract. If a participant is malicious in this case, he/she can only leak the vote result but not the detailed information. [t]0.98 [1]⊳ #1 [H] [code:vote] [1] $\boldsymbol{vote} \gets \{0,0,0,0,0\}$ $\boldsymbol{vote}[option]++$ Protecting Transaction Details We consider the following scenario: a seller and a buyer have a contract with a certain price and quantity of some commodity. The key secret of the scenario is the detail of the purchase including the price, the quantity and maybe some promotion strategy in some complicated cases, while the result (i.e., the total money transferred) which will eventually be reflected on the EOS is not protected. The approximate code is shown in Algorithm [code:transaction]. To ensure the efficacy of the contract, the buyer is required to deposit some funds as balance before making a purchase, which is done by invoking the deposit() and send the corresponding tokens to the bounty contract. Once the both parties are prepared to make a deal, they can invoke the purchase() with the negotiated price and quantity. The invocation of purchase() requires to be signed by both parties. Either party can invoke the settlement() for a refund. The bounty contract will check the total amount of refund before generating the settlement transaction. The example can be extended to a multi-participants scenario which can hide the detail of transactions among the participants and do settlement regularly. Although the transfer of tokens is public on EOS, it is acceptable in many cases because the privacy of transaction details is much more important. And users can do a settlement after a number of transactions, which mixes up the results of these transactions and makes it difficult to resolve. [t]0.49 [1]⊳ #1 [H] [code:transaction] [1] int seller_addr int buyer_addr int seller_blc int buyer_blc buyer_blc+=amount buyer_blc-=amount*price seller_blc+=amount*price settlement←new Transaction() settlement.add(seller_addr,seller_blc) settlement.add(buyer_addr,buyer_blc) [t]0.49 [FOR]ForEach[1] #1 [1]⊳ #1 [H] [code:second-price] [1] Map⟨int,int⟩ $\boldsymbol{balances}$ int bestPrice←-1 int secondPrice←-1 int winner←-1 int seller←-1 $\boldsymbol{balances}.clear()$ seller←addrOfSeller $\boldsymbol{balances}.insert(addr,funds)$ secondPrice←bestPrice bestPrice←price winner←addr secondPrice←price settlement←newTransaction settlement.add(seller,secondPrice) $settlement.add(winner,\boldsymbol{balances}[winner]$ -secondPrice) settlement.add(b.first,b.second) Second-Price Auction In a second-price auction, the bidder who offers the highest price wins but pays the second highest price. The essential element of second-price auctions is that bidders offer bids without knowing the bid of other bidders. We implements an example auction program using the ShadowZone, as shown in Algorithm [code:second-price]. The code above is an approximation of our real implementation. There are two different roles in this case: the manager and the bidders. First the manager can start an auction with the seller’s address so that the fund can be transferred to the seller immediately once the auction ends. After the auction starts successfully, each bidder can offer their price by invoking bid(). Since the tokens transfer on EOS is public, from which the bid price could be inferred, so we allow a user to obfuscate the real price by sending an arbitrary (but more than the real price) amount of tokens to bounty contract, and the excess will be returned to the user after the auction ends. The manager will decide when to conclude the auction and invoke the conclude() to transfer the money from the winner to the seller and refund other bidders’ funds. ShadowZone guarantees the input independent privacy that each user can never see others’ bids even after the auction. In this way, users’ bids are independent of others’ bids. Also, the manager’s function is limited to starting and terminating the auction. Even if the manager is malicious, he/she cannot disclose any information of the auction. Security Analysis In this section, we discuss how ShadowZone mitigates potential attacks. Each party may send, drop, modify, record arbitrary messages in the protocol at any time during the contract deployment and invocation. So we discuss and evaluate the security of ShadowZone. Malicious Worker: During the contract deployment, an attacker may pretend to be a worker and defraud the user of the code of his/her private contract. To defend this attack, remote attestation is required before the communication. The worker must provide a report which is signed by hardware-protected key to prove that he/she runs the unmodified worker client in enclave indeed. Even if the attacker has compromised the network, he/she cannot spy or tamper any message because the communication between the user and the worker is based on a secure channel which is protected by a session key after remote attestation. If the user who performs the deployment is dishonest, he/she cannot get any more privileges than other users in that the secret key of the contract is generated and kept by enclaves. Stealing Invocation Information: The contract invocation is mediated by bounty contract which is publicly visible on the EOS. An attacker may try to steal the invocation information by spying the bounty contract. But this will not work because all the secrets of invocation are encrypted. The user encrypts the arguments with the public key of the contract, and oppositely, the enclave will encrypt the corresponding return value by another key which is transferred along with the arguments by the user. So the attacker can only see the inessential information such as the amount of the remuneration. Since the secrets of an invocation are fully hidden except for the invoker, ShadowZone can guarantee the personal privacy without any exposure risk from a malicious manager, which is a potential concern of some other private blockchain system such as Hawk [5]. Integrity of Invocation: There are potential attackers including dishonest workers who want to compromise the integrity of the invocation by tampering invocation requests or committing fake results. Since the invocation requests are acknowledged on EOS, attackers can manipulate them only by controlling more than half of the state of EOS, which is considered impossible. The response of an invocation includes IVS which contains the hash of corresponding arguments and is signed with the contract’s private key by the enclave. The bounty contract can check the IVS with the contract’s public key to verify that the worker executes the contract correctly with the given arguments inside an enclave. So no one can fake a response to the bounty contract. Replay Attack: To protect the private contract from the replay attack, each message will be endowed with a timestamp. When the bounty contract receives an invoke message, it will first check the timestamp and refuse the old requests. The communication between users and workers will be protected in the same manner. Furthermore, the response of an invocation must specify the corresponding task in the todolist of the bounty contract. Thus the only one response will be accepted by the bounty contract for one task. It is worth noting that the worker’s address inside the IVS decides who will gain the remuneration so it is no use for attackers to intercept the IVS. We implement ShadowZone using Intel SGX which guarantees the integrity and confidentiality of the execution. Intel SGX can protect the execution of smart contracts from attackers on the same host, even those who compromise the OS or control physical access. All the data of the contract is encrypted except inside the enclaves. Malicious workers or attackers on the same machine can only stop service, modify or record the encrypted messages, which will not harm the integrity and confidentiality of our system. For the attacks which exploit the hardware vulnerabilities (e.g., Meltdown and Spectre CPU security flaws), Intel has submitted patches to fix the problems. Actually, most side-channel attacks require multiple attempts to steal information from the enclave, so we can prevent these attacks effectively by limiting the execution times. This is a good idea we will probably implement in the future. It is worth noting that our protocol is not Intel specific and we can implement out system easily on the base of another trusted hardware. Discussion Availability: Currently, the availability of a blockchain system depends on the participation to a large extend. Similarly, ShadowZone needs a number of workers to comprise the TEE-DS and provide services for private contracts. A nascent system always lacks user participation and few workers are willing to work, and it will take a long time to develop to maturation. So we choose to build our system on the base of the mature EOS system and make use of its availability without any modification to the EOS.In addition to EOS, we also need to establish a public platform to provide related services such as the client download (both the user client and the worker client) and maintaining the information of TEE-DS. With these services, anyone who has a machine with enclave can download a worker client, and then find and join the TEE-DS as a worker. In the beginning, we may build the TEE-DS with few nodes as a test version. With the broad participation of EOS, we anticipate that the requirement of private smart contracts and the remuneration will draw more users and workers in. Incentive Mechanism: In current design of ShadowZone, workers only get remuneration for executing contracts. But there is no incentive mechanism for storing private contracts. Thus some utilitarian workers may stop their machines immediately after one task, and keep waiting until new tasks are sent to bounty contract. Since the remuneration is only gained by the fastest worker, the time of execution is closely connected with profit. If a worker only executes contracts without storing them, the latency of synchronizing data (e.g., binary of contracts) from other workers will add more overhead to execution time and reduce expected profit, which motivates workers storing private contracts locally. Furthermore, the worker client is executed as a whole and the response is generated only after all the work is done (including spreading data to other TEE-DS nodes), which is ensured by enclave, and hence no worker can perform part of the execution to maximize profit. Workload Measurement: Ethereum provides a gas mechanism, which endows every operation with a fixed price. With Ethereum’s runtime environment (EVM), the workload of each execution can be measured and then the gas consumption can be calculated with the gas price. The execution will exit immediately once the gas is run out. This mechanism can prevent DoS attacks such as requests for executing some infinite loop within smart contracts. In our current implementation, the contract is executed in the native environment without a similar monitoring mechanism. To solve this problem, we can measure the workload by execution time. Each invocation task will be endowed with a timeout corresponding to the amount of remuneration. If some workers finish the execution before timeout, the first one will win. If the workload of the execution is so heavy that no worker can finish it within before timeout, workers can still gain the remuneration with a measurement to prove that the execution indeed exits after a timeout. The measurement can be generated by enclave, which is similar to Proof of Elapsed Time (PoET) used by Hyperledger Sawtooth . Conclusion We introduced ShadowZone, a system that addresses a major concern about the current smart contract systems based on the blockchainthe lack of confidentiality. Unlike the pure and computationally complex solution (such as Zcash) and the reconstructed licensing chain (such as Coco), ShadowZone can guarantee the confidentiality of existing public blockchains like EOS without any modification. ShadowZone separates the process of the verification of a smart contract from the private execution, and only puts the verification onto the blockchain, without revealing any secrets. The actual logic of smart contracts is executed by off-chain TEE and the communication is encrypted by a secret key only kept by the TEE. We used a native EOS smart contract named bounty contract to handle the publishing, verification and settlement of a private contract, which ensures the integrity and coerciveness. Then we presented the applicability by case studies. We believe that ShadowZone is a practical approach to building confidential public smart contract systems. |
| json metadata | {"tags":["eos","smart","contract"],"image":["https://cdn.steemitimages.com/DQmWNCqMBbw17exLurLtrDx3rUVATbsdA6jmZjaS5zW9cur/e39f9c21-32e6-4b70-aa9d-ce64263dd04b-uarch-0.png","https://cdn.steemitimages.com/DQmaMDXhNTY5W8t9qRhLyu76gAJ4AmHw8Uax6CfzrwfeW1c/35974c2a-2d26-4658-9237-79b152e56e78-uprotocol-0.png"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23419183/Trx b5ecaab445b10bb71b752e1f8e5c8ce75086a02a |
View Raw JSON Data
{
"trx_id": "b5ecaab445b10bb71b752e1f8e5c8ce75086a02a",
"block": 23419183,
"trx_in_block": 37,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-18T03:41:39",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "private-smart-contract-on-public-blockchain-shadowzone-whitepaper",
"title": "Private Smart Contract on Public Blockchain:ShadowZone WhitePaper",
"body": "ShadowZone: Private Smart Contract on Public Blockchain\n\nAbstract\n\nBlockchain is becoming popular as a distributed and reliable ledger which allows distrustful parties to transact safely without trusting third parties. Emerging blockchain systems like EOS support smart contracts where miners can run arbitrary user-defined programs. However, one of the biggest concerns about the blockchain and the smart contract is privacy, since all the transactions on the chain are exposed to the public.\n\nIn this paper, we present ShadowZone, a system that leverages hardware enclave to ensure the confidentiality of smart contracts while keeping the integrity and availability based on existing public blockchains like EOS. ShadowZone establishes a confidential and secure platform protected by Trusted Execution Environment (TEE) off the public blockchain for the execution and storage of private contracts. It only puts the process of verification on the public blockchain. The private computation runs off the blockchain with a protocol token called \"SZT\", which workers earn by providing correct and confidential computation for users. This creates a powerful incentive for workers who own computation devices with TEE to participant into the network. Users can deploy and execute their smart contracts on ShadowZone just like using existing smart contract systems (e.g., Ethereum and ESOIO), while maintaining the confidentiality. ShadowZone also achieves availability and robustness by replicating data of private contracts on an off-chain network called TEE-DS. The data stored in TEE-DS is encrypted with secret keys which are only held by TEE and the data transmission channel between any two nodes is protected by a secure session key. ShadowZone proposes a complete solution for executing private smart contracts on public blockchains.\n\nWe provide a design of our system including a protocol of the cryptographic communication and verification and show the applicability and feasibility of the ShadowZone by various case studies.\n\nIntroduction\n\nBlockchain, proposed as an underlying technology of cryptocurrency like Bitcoin, allows users to transfer currency over a distributed, public and trust-less network. Over the last few years, blockchain systems evolved to support smart contracts which can run custom Turing-complete code on the blockchain, such as Ethereum and EOS. Today, public cryptocurrencies are widely used. On Ethereum, more than 10 million ethers are held by more than 1 million smart contracts. On these blockchain systems, all the participants have the entire log of the system and reach a distributed consensus on the transactions that will modify the state of the chain. This high degree of replication and the strict consensus mechanism ensure integrity and availability but make all data public, which brings the deficiency in confidentiality.\n\nIn this paper, we present ShadowZone, a system that enables private smart contract based on public blockchains. Our idea is to combine hardware enclaves and public blockchains to offer confidentiality of smart contracts while keeping the integrity and availability. On the public blockchain, we create a public smart contract named \"bounty contract\" which performs the process of deployment and verification and stores the metadata of private contract. We also introduce an off-chain distributed storage named TEE-DS to store binary and states of private contracts. The entire TEE-DS is protected by hardware enclaves so all the data it stores will not be leaked or tampered with. Users can then publish the deployment and invocation request and the remuneration on the bounty contract to draw workers (who provide off-chain execution environment) in. If a worker wants to execute a private contract, it needs to run a worker client in hardware enclave, which will get the binary and state from TEE-DS to execute. After the off-chain execution, the enclave will generate a particular signature and put it back to the EOS blockchain, which is used to verify the correctness of the execution. Since we just put the metadata (like hash of binary, public key, state versions) and the encrypted data (like input and output) of ShadowZone to the bounty contract, there is no need for any modification to the underlying protocol of existing blockchain systems. Meanwhile, many workers comprise a distributed storage to improve the reliability and guarantee the availability. We also implement a prototype of ShadowZone with the Intel SGX on EOS blockchain network and show the applicability with three use cases.\n\nThis work:\n\n•presents ShadowZone, a confidential, distributed, trust-less off-chain smart contract system clinging to existing public blockchain networks like EOS without any modification.\n•describes the detailed architecture and protocol of ShadowZone.\n•shows the applicability of ShadowZone with three use cases and demonstrates the security and availability of ShadowZone.\n\nBackground\n\nIn this section, we provide background on the technologies that underpin ShadowZone. We first give a short overview of the blockchain and smart contracts, explore the lack of confidentiality of current smart contract systems, then introduce the hardware enclave and finally describe the threat model of ShadowZone.\n\nBlockchain\n\nA blockchain typically serves as an open, decentralized and trustless distributed ledger which is maintained by all participants. Some participants, called miners, form a peer-to-peer network and all have the full copy of the blockchain. They collect transactions signed by users. After validating the signatures, they packed these transactions into a block. Each block contains the information of the transactions as well as the hash of the previous block, which organizes the data as a sequential list of blocks, called a blockchain. The blockchain is a distributed system designed for Byzantine fault tolerance. Each transaction which may modify the state of the chain will be broadcasted to all miners in the network. Once a block is generated, all the miners need to achieve a consensus on whether to accept it or not. Each miner can decide the block’s content arbitrarily, that is to say, he/she can decide which transactions will be packed into the block. Miners can always generate different blocks with the same parent at the same time, which will cause inconsistency called a fork. To solve the bifurcation, an honest miner always chooses to follow the longest branch.\n\nIf an attacker controls more than 50% of the nodes, he/she can unilaterally generate the branch containing the fake transactions faster than the branch containing the real ones, which causes the double spending problem. To solve this problem, a miner needs to prove that he/she has done a certain amount of work before generating a block. With this proof, known as Proof of Work (PoW), the block is acknowledged to be valid. PoW makes a miner create blocks at the rate related to the proportional of his/her mining power, whichprevents Sybil attack.\n\nSmart Contract and EOS\n\nThe smart contract can trace back to 1996, proposed by Nick Szabo. It is described as \"a set of promises, specified in digital form, including protocols within which the parties perform on these promises\". The smart contract is usually designed to ensure the execution of a contract and to avoid malicious act as well as unforeseen circumstances. It can minimize the utilization of the trusted third party, which results in the reduction of transaction cost, and potentially circumvent censorship, collusion and counter-party risk. Blockchain makes smart contracts possible. Based on the blockchain, smart contracts usually take the form of a general-purpose program. Users can write and deploy any Turing-complete program on the blockchain network.\n\nThe most emerging smart contract implementation is EOS. An EOS smart contract is a user-generated application based on WebAssembly (WASM). WASM is a web standard with widespread support of Google, Microsoft, Apple and others. EOS currently uses clang/llvm with C/C++ compiler as its toolchain for building smart contracts, since C++ is the best language for developing high-performance and secure smart contracts.\n\nIn EOS, a smart contract is registered on the blockchain and executed on EOS nodes. The smart contract defines the interface (actions, parameters, data structures) and the code that implements the interface. The code is compiled into a canonical bytecode format for EOS nodes to retrieve and execute. The blockchain stores the transactions (e.g., legal transfers, game moves) of the contract. Once a smart contract is deployed, it will be executed autonomously. Even its creator cannot stop the execution or modify the code arbitrarily.\n\nAn EOS smart contract consists of a set of action and type definitions. Action definitions specify and implement the behaviors of the contract. The type definitions specify the required content and structures. EOS actions operate primarily in a message-based communication architecture. A client invokes actions by sending (pushing) messages to nodeos. This can be done using the cleos command. It can also be done using one of the EOS send methods (e.g. EOS::action::send). nodeos dispatches action requests to the WASM code that implements a contract. That code runs in its entirety, then processing continues to the next action.\n\nThe wide public participation of smart contracts and the strict consensus mechanism ensure the enforcement, integrity and availability of smart contracts. However, the lack of privacy becomes a pain point that restricts the applications of smart contracts in some privacy-sensitive scenarios.\n\nHardware Enclave\n\nTrusted executed environment (TEE) is a new feature provided by recent commodity CPUs. It creates a secure area which guarantees the integrity and confidentiality of code and data inside. TEE serves as an isolated environment running in parallel with OS. It provides a high-level security for software inside by reducing the trusted computing base (TCB) to only the CPU. Applications running in TEE have secure memory and cryptographic operations to resist attacks from other applications, even the privileged software such as OS or hypervisor.\n\nOur design is general-purpose and applies to any TEE that has above features. In this paper, our implementation is based on Intel’s Software Guard Extensions (SGX) . Intel SGX provides a trusted and isolated environment called enclave. With this hardware feature in CPU, users can deploy their softwares in a remote host with integrity and confidentiality unless CPU package was hacked. An application running inside an enclave is protected from other malicious software including the operating system.\n\nSGX provides remote attestation which allows a remote host to verify the application running in the enclave and generate a secure channel to communicate with it. In the process of initiation of an enclave, the CPU measures the trusted code and the trusted memory within the enclave and produces a hash based on all memory pages known as measurement. Then the software inside the enclave can acquire a report which contains the measurement and other supplementary data such as the public key. This report is signed by a hardware-protected key in CPU to prove that the measured software is running in SGX indeed. The remote attester can then verify the report with Intel Attestation Service (IAS) which can certify that the signature is valid and the corresponding report is generated from authentic CPUs.\n\nThreat Model\n\nOur threat model assumes that multiple parties mutually distrust each other. They are potentially malicious and may try to steal information of smart contracts, modify the execution flow and deviate from the protocol for their benefit. Each party may send, drop, modify, record arbitrary messages in the protocol at any time during the contract deployment and invocation. Any party may crash and stop responding entirely.\n\nWe assume that the blockchain is trustable and available all the time. The information on the blockchain is tamper-resistant but public to everyone. We also assume that network adversaries can intercept the communication between parties, but they cannot control the whole network so that the communication can be eventually established, for example, the user can send a request to the blockchain network and get the response.\n\nWe trust the hardware enclave, its manufacture (like Intel) and the remote attestation service. As long as a node passes the remote attestation, it will be able to execute the shadow contract within its enclave. The rest of the system, including the other software stacks (outside the enclave) and the hardware is not trusted. Side-channel attacks against enclaves and DoS attacks are not considered in this paper.\n\nOur system also relies on the privacy of private key. Each private contract has a unique private key only possessed by the enclave. The private key is used to generate the attestation that the contract has been executed correctly. If an attacker steals the private key in some way, he/she can get paid from the EOS without executing the contract, which could compromise the integrity but not privacy.\n\nSystem Overview\n\nThe goal of ShadowZone is to provide a confidential platform to executing private smart contracts which can be integrated with existing public blockchain such as EOS. Specifically, the privacy of a smart contract consists of the following three parts.\n\n•Privacy of the specification of a smart contract. The source code of a private contract must be hidden during the deployment and subsequent process of execution and synchronization.\n\n•Privacy of the execution of a smart contract. Once a private contract is invoked, the executing process on a worker client cannot be spied and the call arguments, as well as the return values should be hidden during the execution.\n\n•Privacy of the state of a smart contract. The internal state of a private contract may contain user’s secrets and can reflect information of recent transactions. So it should not be published on the blockchain.\n\nTo guarantee the confidentiality of the code and data of a smart contract, a secure channel between a user and TEE-DS will be established before transferring the contract. The contract will be encrypted before transferring and can only be decrypted inside the corresponding enclave.\n\nTo preserve the privacy of execution, we only put the information of invocation and verification onto the blockchain. During the deployment of a private contract, TEE will generate a key-pair for this contract and publish the public key. The invocation arguments are encrypted with the contract’s public key which can only be decrypted within the enclave. The return value will be encrypted by a user-provided key which is delivered along with call arguments. In the entire process, the information of the execution is encrypted except inside the enclave. Anyone even the worker cannot leak the internal executing state.To guarantee the confidentiality of the persistent state of a private contract, ShadowZone stores only the hash of the ledger on the EOS instead of all data. The data can only be managed and viewed inside enclaves. Due to the limited secure memory of enclave like SGX, data could be moved to untrusted memory or disk, and sometimes need network transmission for backup or synchronization. Before writing out the data, ShadowZone will encrypt all data with the hardware key which is only kept by CPUs. This ensures that the data can only be accessed by authenticated users through ShadowZone and no one outside can view or manipulate the persistent state.\n\nSystem Components\n\nFigure.1 shows the architecture of ShadowZone. ShadowZone can be broken down into several subcomponents.\n\n•Bounty Contract. A bounty contract is a native smart contract deployed on blockchain directly, serving as the public portion of ShadowZone.\n\n•User Client. A user client provides interfaces to end users. It does not require enclave to execute.\n\n•Worker Client. A worker client is responsible for the execution and maintenance of private contracts. It needs to run inside enclaves.\n\n•TEE-DS. TEE-DS (Distributed Storage) serves as a distributed network which stores private contracts.\n\n\n\nWe create a smart contract named bounty contract on the EOS blockchain network which serves as a platform for publishing private contract, grabbing execution task and remuneration settlement. Bounty contract is a public contract that every participant in EOS can see and use. A user can deploy his/her private contracts and then invoke them like ordinary contracts via the bounty contract. On the other side, workers with TEE-enabled devices can look up executory tasks in the bounty contract, get the parameters, do the computation, and finally commit the result of the execution.\n\nA user client provides interfaces including contract deployment and invocation for users. It communicates with bounty contract through cleos, command line interface to interact with the EOS blockchain. A user client can be launched without TEE, so it is only trusted by its user.\n\nA worker client is used for fetching executory tasks from bounty contract, getting code and data of private contracts from TEE-DS, executing contracts, committing results and updating the persistent state of contracts. The main part of a worker client, which does the contract correlation processing, runs inside enclaves. It communicates with bounty contract through cleos. Furthermore, a worker client also serves as a server node in TEE-DS.\n\nMany worker clients comprise TEE-DS, a peer-to-peer network storing the code and data of private contracts. In the process of execution of contracts, all the nodes maintain consistency by Paxos-like consensus algorithm. For a certain contract, different workers store the same data but encrypt it with different secret keys. Enclaves maintain the consistency of the unencrypted logical data. The data synchronization is performed on the safe channel between two enclaves after the remote attestation.\n\nExample\n\nHere is a simple example to briefly demonstrate the process of deployment and invocation from different perspectives in our system.\n\n•Deployment: Suppose a user needs to deploy a private contract to ShadowZone. He/She first compiles the code and puts the binary to TEE-DS through the user client. TEE-DS will generate a pair of keys, bind them with the contract and transfer only the public key back to the user. The user client then uploads identification information of the contract (including the public key and the hash of binary, etc.) to the bounty contract. Now the contract is publicly available.\n\n•Invocation: Once the user needs to invoke his/her private contract, he/she sends an invocation request (including arguments) to the bounty contract with a sum of remuneration. A worker client will get the arguments from the bounty contract and get the private contract’s binary from the TEE-DS with the public key as its ID. It then loads the binary to its hardware enclave and executes using the arguments to get a return value. After that, it sends the new state of the private contract to TEE-DS, which will be held at this moment. The worker then makes a response (including the return value and signature, etc.) and sends it to the bounty contract. The bounty contract will verify the response to ensure that it is generated by correct contract, states, and arguments in real hardware enclave before transferring the remuneration to the worker. Once TEE-DS confirms that the execution has been acknowledged by the bounty contract, it will update the states of the private contract, which finishes the process of one invocation.\n\nAs shown in the example, the EOS blockchain ensures the availability (a private contract will eventually get executed), and the integrity (the result cannot be modified), while the hardware enclave is used to protect privacy. There are many challenges unlisted, e.g., how to design a protocol and key management to defend against attacks like rollback and impersonation, how to minimize the trust on the manager in a second-price auction, which will be described in the following sections.\n\nDesign\n\nIn this section we present the design of ShadowZone. We first describe the three major parts of ShadowZone: the bounty contract (Subsection [subsec:bounty-contract]), the shadow contract (Subsection [subsec:shadow-contract]) and the TEE-DS (Subsection [subsec:tee-ds]) and then introduce the detailed protocol (Subsection [subsec:protocol]).\n\nBounty Contract\n\nBounty contract is a native smart contract deployed on the EOS. Its major responsibility is to perform the public portion of deployment, invocation and verification of private contracts. Sometimes it needs to generate transactions to handle the settlement. It maintains two lists: a contract list and a todolist.\n\nEach entry in the contract list represents a private contract. It contains (1) the contract’s ID (as the primary key), (2) the contract’s public key, (3) a version number, (4) an owner list, (5) the hash of the contract’s persistent state, and (6) the balance of the contract. Once the bounty contract receives a deploying request, it will construct a new entry and add it into the contract list, and the invocation will update the hash value and increase the version number. The contract list can be used to record and verify the state of private contracts but does not expose any information about the core business logic. Users can deposit funds into a private contract by sending the corresponding tokens to bounty contract through deploy transaction or invoke transaction (described in Subsection [subsec:protocol]). The bounty contract records the funds as the balance of a contract. When the result of an invocation is a settlement, the bounty contract will check if the balance is enough before performing the transfer. It is worth noting that the bounty contract only records the total balance of the contract. The detailed distribution of this sum money is decided by the contract itself.\n\nThe todolist serves as a task pool. Users publish invocation tasks into the todolist to allow workers to bid the task. Each entry represents an invocation request, which contains (1) the task ID (as the primary key), (2) the contract’s public key, (3) the encrypted arguments, (4) the remuneration offered by the user, (5) the state (e.g.,TODO or FINISHED), and (6) the encrypted return value. Only one worker can gain the remuneration (typically the first), which is guaranteed by the EOS.\n\nThe bounty contract is the key component of our system. Users and workers communicate indirectly through the bounty contract. Thus, the integrity and the availability of operations on private contracts like deployment and invocation are ensured by the public blockchain.\n\nShadow Contract\n\nWe propose to build a confidential environment for smart contract execution using hardware enclave, but it is not enough to just deploy the native EOS contract directly because only the process of the execution can be hidden, while the information outside such as the call arguments and return values is still exposed.\n\nTo this end, we introduce Shadow Contract, a re-design of the native EOS smart contract. Shadow Contract uses a contract gate to isolate the core business logic of the smart contract. The contract gate is loaded by the worker client before the execution of smart contracts, endowed with the private key of the smart contract. The contract gate has two primary functionalities: decrypting arguments and generating the response. The two functionalities are independent of the contract code, which means the contract gate can be compatible with any private contract.\n\nTo preserve the privacy of the call arguments, users need to encrypt them with the public key of the contract before sending them to the bounty contract. Before execution, the contract gate first decrypts the arguments and then invokes the target function with the plaintext.\n\nAfter the execution, a response is required to put back to the bounty contract. A response includes the execution’s return value, the version number before the execution, the hash of the contract’s state after the execution, and the settlement information. What is more, an invocation verification signature (IVS) is required to attached to the response.\n\nIVS is used for verifying whether the contract has been executed correctly inside an enclave. The contract gate signs the response along with thehash of call arguments and the worker’s ID by the secret key of the contract to generate IVS. The encryption can only be performed after the execution within enclaves. Then the bounty contract can decrypt IVS by the public key of the contract to verify the execution. The inclusion of the hash of call arguments is to ensure that the worker does execute the contract with given arguments. Since IVS contains the ID of the worker, the remuneration will be sent to the right worker even when a malicious attacker captures IVS and resents it to the bounty contract using his/her own EOS account.\n\nThe return value of the execution is required to be sent back to the user without exposure. To this end, the user needs to provide another symmetric key along with the arguments and encrypt them together with the public key of the contract. The contract gate will encrypt the return value with this key and put the cipher-text into the response, which will then be put back to the bounty contract and only the user can decrypt it.\n\nWhen a function is to trigger a settlement on the EOS, it will return a transaction-type object which the contract gate will put into the response. If a response contains settlement information, the bounty contract will generate an EOS transaction to transfer the money.\n\nBesides the above-mentioned data, the contract gate also puts the hash of the contract state after execution into the response which is used as an attestation for off-chain contract transfer.\n\nTEE-DS\n\nTEE-DSTEE-DS is a peer-to-peer network consisting of many worker clients. It serves as a distributed storage of private contracts which can provide high reliability against malfunction. The secrets (e.g., the code, data and private key) of a private contract are protected by hardware enclave, which guarantees the confidentiality.\n\nAdmission Mechanism: Anyone runs the worker client inside an enclave can join the TEE-DS as a worker. To get permission, the expectant worker needs to connect one of the approved workers and offer a CPU-signed statement that he/she is executing a particular enclave. Once the statement is certified, which is known as remote attestation, the expectant worker can then join the network, get the current network constitution and synchronize data from other workers.\n\nSynchronization Mechanism: After a worker performs an invocation of a private contract, he/she needs to broadcast the updates to other workers. However, some workers may publish different updates of the same contract simultaneously. This happens for several reasons: (1) the states before invocation are different; (2) the invocation requests they choose are different; (3) there are some malicious actions. We utilize the consensus on the blockchain to evade conflicts in TEE-DS. When a worker sends the response of an invocation to the bounty contract, he/she must specify the version number before the execution and the hash of the contract’s state after the execution.\n\nProtocol\n\nThe ShadowZone protocol operates in two scenarios: 1) contract deployment, and 2) contract invocation. Figure. 2 shows the process. Just like smart contract systems based on public blockchains, our current system does not support withdrawal mechanisms unless they have been coded in the contract. Considering the irreversibility and nonrepudiation, a contract cannot be stopped from the outside once deployed. The following is a detailed description of the process of these two scenarios. For simplicity, we ignore mining fees in this subsection, although they can be supported in the implementation.\n\nContract Deployment\n\nThe first scenario of the ShadowZone protocol is contract deployment, as shown in the Fig. 2-A. Similar to using EOS natively, users write the business logic of their private contracts on their clients using native languages (like C/C++), then compile the code, deploy them onto the TEE-DS, and meanwhile upload the identification information (e.g., the hash of the code) to the bounty contract.The final purpose of the deployment is to generate an asymmetric key pair, of which the private key is only kept by the enclave, so that the subsequent invocation can be protected by the public key directly without establishing a secure communication channel.\n\nA1. First, the user sends the binary code to TEE-DS through a secure channel, which is established through remote attestation and protected by a Key〖_session〗 which is used for encrypting data in the session. Once the code is received, TEE-DS will generate an asymmetric encryption key pair(based on the RSA algorithm): Key〖_(c_p)〗 and Key〖_(c_s)〗 (p for public and s for secret), which is unique for each contract. Then TEE-DS sends Key〖_(c_p)〗 back to the user.\n\nA2. After receiving Key〖_(c_p)〗, the user will upload the identification information to the bounty contract, essentially announcing the existence of a new private contract. The information includes: 1) Key〖_(c_p)〗, 2) the owner list (the user’s public address as default), and 3) the hash of the binary code. This is done by the cleos, which generates a deploy transaction containing the information and sends it to the bounty contract. The bounty contract then creates a new contract record in its contract list with the identification information, sets the version number to 0, and sets the state to DEPLOYED.\n\nA3. At last, after the deploy transaction is acknowledged, the code of the private contract along with the key pair will be broadcasted to all other workers in TEE-DS.\n\nContract Invocation\n\nOnce a private contract has been deployed, users can invoke it just like invoking native EOS contracts. The procedure is shown in the Fig. 2-B.\n\n\n\nB1. A user initiates an invocation request through its user client. Similar to the native contract invocation in EOS, the user must specify the contract’s Key〖_(c_p)〗, the remuneration and the corresponding parameters including the function name and call arguments.\n\nB2. The user client will process the request: 1) adding the timestamp into the request body, 2) generating a secret key Key〖_req〗 which is only used for this request and adding it into the request body, and 3) using the Key〖_(c_p)〗 to encrypt the request except for the remuneration, then send the data to the e.\n\nB3. The cleos generates an invoke transaction including the contract’s Key〖_(c_p)〗, the encrypted request and the remuneration, which is sent to the bounty contract.\n\nB4. Once the bounty contract receives the invoke transaction, it first verifies the identification to ensure that the contract exists and the request is from one of the owners of the contract. It then adds a new entry with the information included in the invoke transaction into the todolist marked as TODO, and transfers the remuneration into its account simultaneously.\n\nB5. After the invoke transaction is acknowledged, workers can see the executory tasks. They can choose any task and get the related information including Key〖_(c_p)〗 and encrypted request from the bounty contract.\n\nB6. By using Key〖_(c_p)〗, a worker can ask the TEE-DS for the contract’s code and load the contract into its enclave along with the encrypted request. Inside enclave, the contract gate first decrypts the request to get the arguments and the Key〖_req〗, and then executes the specified function.\n\nB7. If the function exits normally, the contract gate will broadcast the modification of the contract’s persistent state to other workers in TEE-DS and then generate a response including the following parts:1) the version number of the contract before the execution, 2) the hash of the contract’s state after the execution, 3) the return value (if the function has one) which is encrypted by Key〖_req〗, 4) the settlement information (if the function has one), and 5) the IVS (described in Subsection [subsec:shadow-contract]). The worker client then sends the response back to the bounty contract and the bounty contract can verify the validity of the IVS with Key〖_(c_p)〗 to ensure that this worker has completed this task correctly. After the verification, the bounty contract updates the entry in the todolist, marking it as FINISHED and filling the return value if any, and updates the information of the contract including the version number and the hash of contract state. Then the user can fetch the return value and decrypt it by Key〖_req〗. If the result is marked as a settlement, the bounty contract will generate a settlement transaction with the settlement information in the response. The first worker to finish it will obtain the remuneration.\n\nB8. Once the result is acknowledged by bounty contract, the other workers in TEE-DS will accept the modification.\n\nUse Cases\n\nIn this section we introduce some use cases to explain how we can use the ShadowZone to preserve the privacy of smart contract.\n\nProtecting Simple Vote\n\nWe first implement a simple vote example to show the confidentiality of private contract. The scenario is that some people want to start a vote between themselves by a smart contract on the EOS, but they do not want to expose the content of this vote to the public. In our implementation, we assume that the participants know and trust each other and create the vote contract together. Algorithm [code:vote] shows the approximate logic of the example but not the detail.\n\nFirst, all the voters agree on the voting code (private contract). Then they deploy the contract as described in Section [subsec:protocol], which can be performed by any one of the participants. After the deployment is acknowledged, each participant can invoke the cast() function to cast their ballot. The cast() operation will be executed by workers using hardware enclave. Any participant can invoke the check function to query the current state of the vote at any time.\n\nIt is noteworthy that the whole process of the vote including the cast and the check is hidden and only the participants can view it. The workers can get involved in executing but they will never know what indeed happens inside the contract. If a participant is malicious in this case, he/she can only leak the vote result but not the detailed information.\n\n[t]0.98 [1]⊳ #1\n[H] [code:vote]\n[1] $\\boldsymbol{vote} \\gets \\{0,0,0,0,0\\}$ $\\boldsymbol{vote}[option]++$\n\nProtecting Transaction Details\n\nWe consider the following scenario: a seller and a buyer have a contract with a certain price and quantity of some commodity. The key secret of the scenario is the detail of the purchase including the price, the quantity and maybe some promotion strategy in some complicated cases, while the result (i.e., the total money transferred) which will eventually be reflected on the EOS is not protected. The approximate code is shown in Algorithm [code:transaction]. To ensure the efficacy of the contract, the buyer is required to deposit some funds as balance before making a purchase, which is done by invoking the deposit() and send the corresponding tokens to the bounty contract. Once the both parties are prepared to make a deal, they can invoke the purchase() with the negotiated price and quantity. The invocation of purchase() requires to be signed by both parties. Either party can invoke the settlement() for a refund. The bounty contract will check the total amount of refund before generating the settlement transaction.\n\nThe example can be extended to a multi-participants scenario which can hide the detail of transactions among the participants and do settlement regularly. Although the transfer of tokens is public on EOS, it is acceptable in many cases because the privacy of transaction details is much more important. And users can do a settlement after a number of transactions, which mixes up the results of these transactions and makes it difficult to resolve.\n\n[t]0.49 [1]⊳ #1\n[H] [code:transaction]\n[1] int seller_addr int buyer_addr int seller_blc int buyer_blc\nbuyer_blc+=amount\nbuyer_blc-=amount*price seller_blc+=amount*price\nsettlement←new Transaction() settlement.add(seller_addr,seller_blc) settlement.add(buyer_addr,buyer_blc)\n[t]0.49 [FOR]ForEach[1] #1 [1]⊳ #1\n[H] [code:second-price]\n[1] Map⟨int,int⟩ $\\boldsymbol{balances}$ int bestPrice←-1 int secondPrice←-1 int winner←-1 int seller←-1\n$\\boldsymbol{balances}.clear()$ seller←addrOfSeller\n$\\boldsymbol{balances}.insert(addr,funds)$\nsecondPrice←bestPrice bestPrice←price winner←addr\nsecondPrice←price\nsettlement←newTransaction settlement.add(seller,secondPrice) $settlement.add(winner,\\boldsymbol{balances}[winner]$ -secondPrice)\nsettlement.add(b.first,b.second)\n\nSecond-Price Auction\n\nIn a second-price auction, the bidder who offers the highest price wins but pays the second highest price. The essential element of second-price auctions is that bidders offer bids without knowing the bid of other bidders.\n\nWe implements an example auction program using the ShadowZone, as shown in Algorithm [code:second-price]. The code above is an approximation of our real implementation. There are two different roles in this case: the manager and the bidders. First the manager can start an auction with the seller’s address so that the fund can be transferred to the seller immediately once the auction ends. After the auction starts successfully, each bidder can offer their price by invoking bid(). Since the tokens transfer on EOS is public, from which the bid price could be inferred, so we allow a user to obfuscate the real price by sending an arbitrary (but more than the real price) amount of tokens to bounty contract, and the excess will be returned to the user after the auction ends. The manager will decide when to conclude the auction and invoke the conclude() to transfer the money from the winner to the seller and refund other bidders’ funds.\n\nShadowZone guarantees the input independent privacy that each user can never see others’ bids even after the auction. In this way, users’ bids are independent of others’ bids. Also, the manager’s function is limited to starting and terminating the auction. Even if the manager is malicious, he/she cannot disclose any information of the auction.\n\nSecurity Analysis\n\nIn this section, we discuss how ShadowZone mitigates potential attacks. Each party may send, drop, modify, record arbitrary messages in the protocol at any time during the contract deployment and invocation. So we discuss and evaluate the security of ShadowZone.\n\nMalicious Worker: During the contract deployment, an attacker may pretend to be a worker and defraud the user of the code of his/her private contract. To defend this attack, remote attestation is required before the communication. The worker must provide a report which is signed by hardware-protected key to prove that he/she runs the unmodified worker client in enclave indeed. Even if the attacker has compromised the network, he/she cannot spy or tamper any message because the communication between the user and the worker is based on a secure channel which is protected by a session key after remote attestation. If the user who performs the deployment is dishonest, he/she cannot get any more privileges than other users in that the secret key of the contract is generated and kept by enclaves.\n\nStealing Invocation Information: The contract invocation is mediated by bounty contract which is publicly visible on the EOS. An attacker may try to steal the invocation information by spying the bounty contract. But this will not work because all the secrets of invocation are encrypted. The user encrypts the arguments with the public key of the contract, and oppositely, the enclave will encrypt the corresponding return value by another key which is transferred along with the arguments by the user. So the attacker can only see the inessential information such as the amount of the remuneration. Since the secrets of an invocation are fully hidden except for the invoker, ShadowZone can guarantee the personal privacy without any exposure risk from a malicious manager, which is a potential concern of some other private blockchain system such as Hawk [5].\n\nIntegrity of Invocation: There are potential attackers including dishonest workers who want to compromise the integrity of the invocation by tampering invocation requests or committing fake results. Since the invocation requests are acknowledged on EOS, attackers can manipulate them only by controlling more than half of the state of EOS, which is considered impossible. The response of an invocation includes IVS which contains the hash of corresponding arguments and is signed with the contract’s private key by the enclave. The bounty contract can check the IVS with the contract’s public key to verify that the worker executes the contract correctly with the given arguments inside an enclave. So no one can fake a response to the bounty contract.\n\nReplay Attack: To protect the private contract from the replay attack, each message will be endowed with a timestamp. When the bounty contract receives an invoke message, it will first check the timestamp and refuse the old requests. The communication between users and workers will be protected in the same manner. Furthermore, the response of an invocation must specify the corresponding task in the todolist of the bounty contract. Thus the only one response will be accepted by the bounty contract for one task. It is worth noting that the worker’s address inside the IVS decides who will gain the remuneration so it is no use for attackers to intercept the IVS.\n\nWe implement ShadowZone using Intel SGX which guarantees the integrity and confidentiality of the execution. Intel SGX can protect the execution of smart contracts from attackers on the same host, even those who compromise the OS or control physical access. All the data of the contract is encrypted except inside the enclaves. Malicious workers or attackers on the same machine can only stop service, modify or record the encrypted messages, which will not harm the integrity and confidentiality of our system. For the attacks which exploit the hardware vulnerabilities (e.g., Meltdown and Spectre CPU security flaws), Intel has submitted patches to fix the problems. Actually, most side-channel attacks require multiple attempts to steal information from the enclave, so we can prevent these attacks effectively by limiting the execution times. This is a good idea we will probably implement in the future.\n\nIt is worth noting that our protocol is not Intel specific and we can implement out system easily on the base of another trusted hardware.\n\nDiscussion\n\nAvailability: Currently, the availability of a blockchain system depends on the participation to a large extend. Similarly, ShadowZone needs a number of workers to comprise the TEE-DS and provide services for private contracts. A nascent system always lacks user participation and few workers are willing to work, and it will take a long time to develop to maturation. So we choose to build our system on the base of the mature EOS system and make use of its availability without any modification to the EOS.In addition to EOS, we also need to establish a public platform to provide related services such as the client download (both the user client and the worker client) and maintaining the information of TEE-DS. With these services, anyone who has a machine with enclave can download a worker client, and then find and join the TEE-DS as a worker. In the beginning, we may build the TEE-DS with few nodes as a test version. With the broad participation of EOS, we anticipate that the requirement of private smart contracts and the remuneration will draw more users and workers in.\n\nIncentive Mechanism: In current design of ShadowZone, workers only get remuneration for executing contracts. But there is no incentive mechanism for storing private contracts. Thus some utilitarian workers may stop their machines immediately after one task, and keep waiting until new tasks are sent to bounty contract. Since the remuneration is only gained by the fastest worker, the time of execution is closely connected with profit. If a worker only executes contracts without storing them, the latency of synchronizing data (e.g., binary of contracts) from other workers will add more overhead to execution time and reduce expected profit, which motivates workers storing private contracts locally. Furthermore, the worker client is executed as a whole and the response is generated only after all the work is done (including spreading data to other TEE-DS nodes), which is ensured by enclave, and hence no worker can perform part of the execution to maximize profit.\n\nWorkload Measurement: Ethereum provides a gas mechanism, which endows every operation with a fixed price. With Ethereum’s runtime environment (EVM), the workload of each execution can be measured and then the gas consumption can be calculated with the gas price. The execution will exit immediately once the gas is run out. This mechanism can prevent DoS attacks such as requests for executing some infinite loop within smart contracts. In our current implementation, the contract is executed in the native environment without a similar monitoring mechanism. To solve this problem, we can measure the workload by execution time. Each invocation task will be endowed with a timeout corresponding to the amount of remuneration. If some workers finish the execution before timeout, the first one will win. If the workload of the execution is so heavy that no worker can finish it within before timeout, workers can still gain the remuneration with a measurement to prove that the execution indeed exits after a timeout. The measurement can be generated by enclave, which is similar to Proof of Elapsed Time (PoET) used by Hyperledger Sawtooth .\n\nConclusion\n\nWe introduced ShadowZone, a system that addresses a major concern about the current smart contract systems based on the blockchainthe lack of confidentiality. Unlike the pure and computationally complex solution (such as Zcash) and the reconstructed licensing chain (such as Coco), ShadowZone can guarantee the confidentiality of existing public blockchains like EOS without any modification. ShadowZone separates the process of the verification of a smart contract from the private execution, and only puts the verification onto the blockchain, without revealing any secrets. The actual logic of smart contracts is executed by off-chain TEE and the communication is encrypted by a secret key only kept by the TEE.\n\nWe used a native EOS smart contract named bounty contract to handle the publishing, verification and settlement of a private contract, which ensures the integrity and coerciveness. Then we presented the applicability by case studies. We believe that ShadowZone is a practical approach to building confidential public smart contract systems.",
"json_metadata": "{\"tags\":[\"eos\",\"smart\",\"contract\"],\"image\":[\"https://cdn.steemitimages.com/DQmWNCqMBbw17exLurLtrDx3rUVATbsdA6jmZjaS5zW9cur/e39f9c21-32e6-4b70-aa9d-ce64263dd04b-uarch-0.png\",\"https://cdn.steemitimages.com/DQmaMDXhNTY5W8t9qRhLyu76gAJ4AmHw8Uax6CfzrwfeW1c/35974c2a-2d26-4658-9237-79b152e56e78-uprotocol-0.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/06/15 13:38:03
2018/06/15 13:38:03
| parent author | zhenek |
| parent permlink | re-eosbeijing-game-based-on-eos-pandafun-whitepaper-20180614t111116955z |
| author | eosbeijing |
| permlink | re-zhenek-re-eosbeijing-game-based-on-eos-pandafun-whitepaper-20180615t133804153z |
| title | |
| body | It will be online at the end of June. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #23344721/Trx c7d8ea015e17c8b9fc70f349a37e1d538bc67556 |
View Raw JSON Data
{
"trx_id": "c7d8ea015e17c8b9fc70f349a37e1d538bc67556",
"block": 23344721,
"trx_in_block": 50,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-15T13:38:03",
"op": [
"comment",
{
"parent_author": "zhenek",
"parent_permlink": "re-eosbeijing-game-based-on-eos-pandafun-whitepaper-20180614t111116955z",
"author": "eosbeijing",
"permlink": "re-zhenek-re-eosbeijing-game-based-on-eos-pandafun-whitepaper-20180615t133804153z",
"title": "",
"body": "It will be online at the end of June.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}nazli.afzalupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains2018/06/15 05:54:06
nazli.afzalupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains
2018/06/15 05:54:06
| voter | nazli.afzal |
| author | eosbeijing |
| permlink | shadowzone-private-smart-contracts-on-public-blockchains |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23335444/Trx ed07ed7f271989742b26a0c0e6848efe9a0e7cc3 |
View Raw JSON Data
{
"trx_id": "ed07ed7f271989742b26a0c0e6848efe9a0e7cc3",
"block": 23335444,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-15T05:54:06",
"op": [
"vote",
{
"voter": "nazli.afzal",
"author": "eosbeijing",
"permlink": "shadowzone-private-smart-contracts-on-public-blockchains",
"weight": 10000
}
]
}blocktheoryupvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper2018/06/14 18:32:48
blocktheoryupvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper
2018/06/14 18:32:48
| voter | blocktheory |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23321820/Trx 4597531d0afa5e557eeb58115440955ba50158f1 |
View Raw JSON Data
{
"trx_id": "4597531d0afa5e557eeb58115440955ba50158f1",
"block": 23321820,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T18:32:48",
"op": [
"vote",
{
"voter": "blocktheory",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"weight": 10000
}
]
}amedzubair93upvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains2018/06/14 14:25:57
amedzubair93upvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains
2018/06/14 14:25:57
| voter | amedzubair93 |
| author | eosbeijing |
| permlink | shadowzone-private-smart-contracts-on-public-blockchains |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23316883/Trx bdd421cecd1d278ec3658e25b140f9f5280fa171 |
View Raw JSON Data
{
"trx_id": "bdd421cecd1d278ec3658e25b140f9f5280fa171",
"block": 23316883,
"trx_in_block": 35,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T14:25:57",
"op": [
"vote",
{
"voter": "amedzubair93",
"author": "eosbeijing",
"permlink": "shadowzone-private-smart-contracts-on-public-blockchains",
"weight": 10000
}
]
}tstoupvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper2018/06/14 11:57:15
tstoupvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper
2018/06/14 11:57:15
| voter | tsto |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23313910/Trx ad882ad21e5df36f1ad1ffce74d21ec3b5569b81 |
View Raw JSON Data
{
"trx_id": "ad882ad21e5df36f1ad1ffce74d21ec3b5569b81",
"block": 23313910,
"trx_in_block": 34,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T11:57:15",
"op": [
"vote",
{
"voter": "tsto",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"weight": 10000
}
]
}2018/06/14 11:11:18
2018/06/14 11:11:18
| parent author | eosbeijing |
| parent permlink | game-based-on-eos-pandafun-whitepaper |
| author | zhenek |
| permlink | re-eosbeijing-game-based-on-eos-pandafun-whitepaper-20180614t111116955z |
| title | |
| body | Больше игр на ЕОС! |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #23312991/Trx 70952c548f9bb8c6cd10a3d5a53d09050468cc57 |
View Raw JSON Data
{
"trx_id": "70952c548f9bb8c6cd10a3d5a53d09050468cc57",
"block": 23312991,
"trx_in_block": 63,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T11:11:18",
"op": [
"comment",
{
"parent_author": "eosbeijing",
"parent_permlink": "game-based-on-eos-pandafun-whitepaper",
"author": "zhenek",
"permlink": "re-eosbeijing-game-based-on-eos-pandafun-whitepaper-20180614t111116955z",
"title": "",
"body": "Больше игр на ЕОС!",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}zhenekupvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper2018/06/14 11:11:00
zhenekupvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper
2018/06/14 11:11:00
| voter | zhenek |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23312985/Trx 82e10ce9b4b0f02718f824ecfa7e5d51ebd1db9e |
View Raw JSON Data
{
"trx_id": "82e10ce9b4b0f02718f824ecfa7e5d51ebd1db9e",
"block": 23312985,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T11:11:00",
"op": [
"vote",
{
"voter": "zhenek",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"weight": 10000
}
]
}nomad88upvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper2018/06/14 10:50:54
nomad88upvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper
2018/06/14 10:50:54
| voter | nomad88 |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23312583/Trx 61078c8d134196d27934d967aefc0d418c8e21c6 |
View Raw JSON Data
{
"trx_id": "61078c8d134196d27934d967aefc0d418c8e21c6",
"block": 23312583,
"trx_in_block": 36,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T10:50:54",
"op": [
"vote",
{
"voter": "nomad88",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"weight": 10000
}
]
}eosbeijingpublished a new post: game-based-on-eos-pandafun-whitepaper2018/06/14 10:46:48
eosbeijingpublished a new post: game-based-on-eos-pandafun-whitepaper
2018/06/14 10:46:48
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| title | Game based on EOS: PandaFun WhitePaper |
| body | @@ -4,16 +4,23 @@ site: +http:// pandafun @@ -22,16 +22,17 @@ dafun.io +/ %0A%0APandaF @@ -9845,16 +9845,48 @@ EOS Blockchain. +%0A%0AOur site: http://pandafun.io/ |
| json metadata | {"tags":["eos","game"],"image":["https://cdn.steemitimages.com/DQmf1pjpm2dryyJFWyBxLT9ee5bs5z2NpAPLnVKmib15qQp/1.jpg","https://cdn.steemitimages.com/DQmRFsmv6GJWhsxyR5N9s9JbFwpLTNtVFs3QnNL5vH7n96V/2.jpg","https://cdn.steemitimages.com/DQmPruWsX5zyk5byb9z8jLwt8ZEFtdXFYxeAHBhYvCY4Jxc/3.png","https://cdn.steemitimages.com/DQmRUyiDYB8u4kTAHm7J33eqA5PqJfBhGyY6r63TPGvaQZr/4.png","https://cdn.steemitimages.com/DQmQYh1dkxjFznxuMJMeyjt81pjqMxXrLMhXp6tERPqGDad/5.png","https://cdn.steemitimages.com/DQmVVR37vkPkMzpfmYSFjovnZQMT1DYcQPg8kq6hDfbf6GK/6.png","https://cdn.steemitimages.com/DQmcE8WhJtR6zp1csFqBHanSs6mNgnnhPTcn8jqHY9YYked/7.png","https://cdn.steemitimages.com/DQmWPnmSMk54va6BTURryE9YHL4umtvp73G12ppAq3pGT5A/8.png","https://cdn.steemitimages.com/DQmV6Na2CBrg2kqqtpM414Y5cMKUYuhV6EUZXprNBuL4A69/%E6%8D%95%E8%8E%B71.PNG","https://cdn.steemitimages.com/DQmUzu42n86QCECGCEFCY9pGvGL1BtnRTzfnbhEzZ9uQrES/%E6%8D%95%E8%8E%B72.PNG","https://cdn.steemitimages.com/DQmNV1xnTvDyW6XaryW5oJAGYRNZwnRxi5bd5qHqtS8NXGf/%E6%8D%95%E8%8E%B73.PNG","https://cdn.steemitimages.com/DQmc8fRBKNDvxXuVt6w8rvhhQuL4kjyQuRDSw3RD6Rbydww/%E6%8D%95%E8%8E%B74.PNG","https://cdn.steemitimages.com/DQmdVW7BpMAZayCZa8HA3gay5YE1DAxySFGttq42qCubu1r/%E6%8D%95%E8%8E%B75.PNG","https://cdn.steemitimages.com/DQmcfytiUmfY4iwnWpa2QQCaQnUhbnqnGJgTWxa17UXBEwD/%E6%8D%95%E8%8E%B76.PNG","https://cdn.steemitimages.com/DQmQcfkcdByRmhoGH6KCpZySVFnyjyFdBPy8JpxpKVFSgY8/%E6%8D%95%E8%8E%B77.PNG","https://cdn.steemitimages.com/DQmY9qVvnN2exbtee1AXPNMJWPCPfFnuqTL5cJE55eHfqNY/%E6%8D%95%E8%8E%B78.PNG","https://cdn.steemitimages.com/DQmSnuZg8rNdUDA54xEweHyoWMzXRT5zPm17Qm6YZ73YCKw/%E6%8D%95%E8%8E%B79.PNG","https://cdn.steemitimages.com/DQmYU5Q61FNTGeb9VcdVcbhWSR8LkV58pqEAUTRUorL9JGT/9.png"],"app":"steemit/0.1","format":"markdown","links":["http://pandafun.io/"]} |
| Transaction Info | Block #23312501/Trx 07cfc4a3aa2e4566c037519482839f0cbc9b4118 |
View Raw JSON Data
{
"trx_id": "07cfc4a3aa2e4566c037519482839f0cbc9b4118",
"block": 23312501,
"trx_in_block": 56,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T10:46:48",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"title": "Game based on EOS: PandaFun WhitePaper",
"body": "@@ -4,16 +4,23 @@\n site: \n+http://\n pandafun\n@@ -22,16 +22,17 @@\n dafun.io\n+/\n %0A%0APandaF\n@@ -9845,16 +9845,48 @@\n EOS Blockchain.\n+%0A%0AOur site: http://pandafun.io/\n",
"json_metadata": "{\"tags\":[\"eos\",\"game\"],\"image\":[\"https://cdn.steemitimages.com/DQmf1pjpm2dryyJFWyBxLT9ee5bs5z2NpAPLnVKmib15qQp/1.jpg\",\"https://cdn.steemitimages.com/DQmRFsmv6GJWhsxyR5N9s9JbFwpLTNtVFs3QnNL5vH7n96V/2.jpg\",\"https://cdn.steemitimages.com/DQmPruWsX5zyk5byb9z8jLwt8ZEFtdXFYxeAHBhYvCY4Jxc/3.png\",\"https://cdn.steemitimages.com/DQmRUyiDYB8u4kTAHm7J33eqA5PqJfBhGyY6r63TPGvaQZr/4.png\",\"https://cdn.steemitimages.com/DQmQYh1dkxjFznxuMJMeyjt81pjqMxXrLMhXp6tERPqGDad/5.png\",\"https://cdn.steemitimages.com/DQmVVR37vkPkMzpfmYSFjovnZQMT1DYcQPg8kq6hDfbf6GK/6.png\",\"https://cdn.steemitimages.com/DQmcE8WhJtR6zp1csFqBHanSs6mNgnnhPTcn8jqHY9YYked/7.png\",\"https://cdn.steemitimages.com/DQmWPnmSMk54va6BTURryE9YHL4umtvp73G12ppAq3pGT5A/8.png\",\"https://cdn.steemitimages.com/DQmV6Na2CBrg2kqqtpM414Y5cMKUYuhV6EUZXprNBuL4A69/%E6%8D%95%E8%8E%B71.PNG\",\"https://cdn.steemitimages.com/DQmUzu42n86QCECGCEFCY9pGvGL1BtnRTzfnbhEzZ9uQrES/%E6%8D%95%E8%8E%B72.PNG\",\"https://cdn.steemitimages.com/DQmNV1xnTvDyW6XaryW5oJAGYRNZwnRxi5bd5qHqtS8NXGf/%E6%8D%95%E8%8E%B73.PNG\",\"https://cdn.steemitimages.com/DQmc8fRBKNDvxXuVt6w8rvhhQuL4kjyQuRDSw3RD6Rbydww/%E6%8D%95%E8%8E%B74.PNG\",\"https://cdn.steemitimages.com/DQmdVW7BpMAZayCZa8HA3gay5YE1DAxySFGttq42qCubu1r/%E6%8D%95%E8%8E%B75.PNG\",\"https://cdn.steemitimages.com/DQmcfytiUmfY4iwnWpa2QQCaQnUhbnqnGJgTWxa17UXBEwD/%E6%8D%95%E8%8E%B76.PNG\",\"https://cdn.steemitimages.com/DQmQcfkcdByRmhoGH6KCpZySVFnyjyFdBPy8JpxpKVFSgY8/%E6%8D%95%E8%8E%B77.PNG\",\"https://cdn.steemitimages.com/DQmY9qVvnN2exbtee1AXPNMJWPCPfFnuqTL5cJE55eHfqNY/%E6%8D%95%E8%8E%B78.PNG\",\"https://cdn.steemitimages.com/DQmSnuZg8rNdUDA54xEweHyoWMzXRT5zPm17Qm6YZ73YCKw/%E6%8D%95%E8%8E%B79.PNG\",\"https://cdn.steemitimages.com/DQmYU5Q61FNTGeb9VcdVcbhWSR8LkV58pqEAUTRUorL9JGT/9.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"links\":[\"http://pandafun.io/\"]}"
}
]
}eosbeijingpublished a new post: game-based-on-eos-pandafun-whitepaper2018/06/14 10:45:42
eosbeijingpublished a new post: game-based-on-eos-pandafun-whitepaper
2018/06/14 10:45:42
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| title | Game based on EOS: PandaFun WhitePaper |
| body | @@ -1,16 +1,40 @@ +Our site: pandafun.io%0A%0A PandaFun Game Wh |
| json metadata | {"tags":["eos","game"],"image":["https://cdn.steemitimages.com/DQmf1pjpm2dryyJFWyBxLT9ee5bs5z2NpAPLnVKmib15qQp/1.jpg","https://cdn.steemitimages.com/DQmRFsmv6GJWhsxyR5N9s9JbFwpLTNtVFs3QnNL5vH7n96V/2.jpg","https://cdn.steemitimages.com/DQmPruWsX5zyk5byb9z8jLwt8ZEFtdXFYxeAHBhYvCY4Jxc/3.png","https://cdn.steemitimages.com/DQmRUyiDYB8u4kTAHm7J33eqA5PqJfBhGyY6r63TPGvaQZr/4.png","https://cdn.steemitimages.com/DQmQYh1dkxjFznxuMJMeyjt81pjqMxXrLMhXp6tERPqGDad/5.png","https://cdn.steemitimages.com/DQmVVR37vkPkMzpfmYSFjovnZQMT1DYcQPg8kq6hDfbf6GK/6.png","https://cdn.steemitimages.com/DQmcE8WhJtR6zp1csFqBHanSs6mNgnnhPTcn8jqHY9YYked/7.png","https://cdn.steemitimages.com/DQmWPnmSMk54va6BTURryE9YHL4umtvp73G12ppAq3pGT5A/8.png","https://cdn.steemitimages.com/DQmV6Na2CBrg2kqqtpM414Y5cMKUYuhV6EUZXprNBuL4A69/%E6%8D%95%E8%8E%B71.PNG","https://cdn.steemitimages.com/DQmUzu42n86QCECGCEFCY9pGvGL1BtnRTzfnbhEzZ9uQrES/%E6%8D%95%E8%8E%B72.PNG","https://cdn.steemitimages.com/DQmNV1xnTvDyW6XaryW5oJAGYRNZwnRxi5bd5qHqtS8NXGf/%E6%8D%95%E8%8E%B73.PNG","https://cdn.steemitimages.com/DQmc8fRBKNDvxXuVt6w8rvhhQuL4kjyQuRDSw3RD6Rbydww/%E6%8D%95%E8%8E%B74.PNG","https://cdn.steemitimages.com/DQmdVW7BpMAZayCZa8HA3gay5YE1DAxySFGttq42qCubu1r/%E6%8D%95%E8%8E%B75.PNG","https://cdn.steemitimages.com/DQmcfytiUmfY4iwnWpa2QQCaQnUhbnqnGJgTWxa17UXBEwD/%E6%8D%95%E8%8E%B76.PNG","https://cdn.steemitimages.com/DQmQcfkcdByRmhoGH6KCpZySVFnyjyFdBPy8JpxpKVFSgY8/%E6%8D%95%E8%8E%B77.PNG","https://cdn.steemitimages.com/DQmY9qVvnN2exbtee1AXPNMJWPCPfFnuqTL5cJE55eHfqNY/%E6%8D%95%E8%8E%B78.PNG","https://cdn.steemitimages.com/DQmSnuZg8rNdUDA54xEweHyoWMzXRT5zPm17Qm6YZ73YCKw/%E6%8D%95%E8%8E%B79.PNG","https://cdn.steemitimages.com/DQmYU5Q61FNTGeb9VcdVcbhWSR8LkV58pqEAUTRUorL9JGT/9.png"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23312479/Trx d9304b4aabe5847219f059b1f85685ed186f608a |
View Raw JSON Data
{
"trx_id": "d9304b4aabe5847219f059b1f85685ed186f608a",
"block": 23312479,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T10:45:42",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"title": "Game based on EOS: PandaFun WhitePaper",
"body": "@@ -1,16 +1,40 @@\n+Our site: pandafun.io%0A%0A\n PandaFun Game Wh\n",
"json_metadata": "{\"tags\":[\"eos\",\"game\"],\"image\":[\"https://cdn.steemitimages.com/DQmf1pjpm2dryyJFWyBxLT9ee5bs5z2NpAPLnVKmib15qQp/1.jpg\",\"https://cdn.steemitimages.com/DQmRFsmv6GJWhsxyR5N9s9JbFwpLTNtVFs3QnNL5vH7n96V/2.jpg\",\"https://cdn.steemitimages.com/DQmPruWsX5zyk5byb9z8jLwt8ZEFtdXFYxeAHBhYvCY4Jxc/3.png\",\"https://cdn.steemitimages.com/DQmRUyiDYB8u4kTAHm7J33eqA5PqJfBhGyY6r63TPGvaQZr/4.png\",\"https://cdn.steemitimages.com/DQmQYh1dkxjFznxuMJMeyjt81pjqMxXrLMhXp6tERPqGDad/5.png\",\"https://cdn.steemitimages.com/DQmVVR37vkPkMzpfmYSFjovnZQMT1DYcQPg8kq6hDfbf6GK/6.png\",\"https://cdn.steemitimages.com/DQmcE8WhJtR6zp1csFqBHanSs6mNgnnhPTcn8jqHY9YYked/7.png\",\"https://cdn.steemitimages.com/DQmWPnmSMk54va6BTURryE9YHL4umtvp73G12ppAq3pGT5A/8.png\",\"https://cdn.steemitimages.com/DQmV6Na2CBrg2kqqtpM414Y5cMKUYuhV6EUZXprNBuL4A69/%E6%8D%95%E8%8E%B71.PNG\",\"https://cdn.steemitimages.com/DQmUzu42n86QCECGCEFCY9pGvGL1BtnRTzfnbhEzZ9uQrES/%E6%8D%95%E8%8E%B72.PNG\",\"https://cdn.steemitimages.com/DQmNV1xnTvDyW6XaryW5oJAGYRNZwnRxi5bd5qHqtS8NXGf/%E6%8D%95%E8%8E%B73.PNG\",\"https://cdn.steemitimages.com/DQmc8fRBKNDvxXuVt6w8rvhhQuL4kjyQuRDSw3RD6Rbydww/%E6%8D%95%E8%8E%B74.PNG\",\"https://cdn.steemitimages.com/DQmdVW7BpMAZayCZa8HA3gay5YE1DAxySFGttq42qCubu1r/%E6%8D%95%E8%8E%B75.PNG\",\"https://cdn.steemitimages.com/DQmcfytiUmfY4iwnWpa2QQCaQnUhbnqnGJgTWxa17UXBEwD/%E6%8D%95%E8%8E%B76.PNG\",\"https://cdn.steemitimages.com/DQmQcfkcdByRmhoGH6KCpZySVFnyjyFdBPy8JpxpKVFSgY8/%E6%8D%95%E8%8E%B77.PNG\",\"https://cdn.steemitimages.com/DQmY9qVvnN2exbtee1AXPNMJWPCPfFnuqTL5cJE55eHfqNY/%E6%8D%95%E8%8E%B78.PNG\",\"https://cdn.steemitimages.com/DQmSnuZg8rNdUDA54xEweHyoWMzXRT5zPm17Qm6YZ73YCKw/%E6%8D%95%E8%8E%B79.PNG\",\"https://cdn.steemitimages.com/DQmYU5Q61FNTGeb9VcdVcbhWSR8LkV58pqEAUTRUorL9JGT/9.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}aydogdyupvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper2018/06/14 10:43:21
aydogdyupvoted (100.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper
2018/06/14 10:43:21
| voter | aydogdy |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23312432/Trx 4a5747d709e159a3b4371644ea02e868c52ca6d4 |
View Raw JSON Data
{
"trx_id": "4a5747d709e159a3b4371644ea02e868c52ca6d4",
"block": 23312432,
"trx_in_block": 55,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T10:43:21",
"op": [
"vote",
{
"voter": "aydogdy",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"weight": 10000
}
]
}ubgupvoted (1.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper2018/06/14 10:42:33
ubgupvoted (1.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper
2018/06/14 10:42:33
| voter | ubg |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| weight | 100 (1.00%) |
| Transaction Info | Block #23312416/Trx 244961d21a7750e14dbd6add9979d819e8b11133 |
View Raw JSON Data
{
"trx_id": "244961d21a7750e14dbd6add9979d819e8b11133",
"block": 23312416,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T10:42:33",
"op": [
"vote",
{
"voter": "ubg",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"weight": 100
}
]
}hackerzizonupvoted (1.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper2018/06/14 10:42:06
hackerzizonupvoted (1.00%) @eosbeijing / game-based-on-eos-pandafun-whitepaper
2018/06/14 10:42:06
| voter | hackerzizon |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| weight | 100 (1.00%) |
| Transaction Info | Block #23312407/Trx da64b577f9340d4040e752ec125afe2e79fc2347 |
View Raw JSON Data
{
"trx_id": "da64b577f9340d4040e752ec125afe2e79fc2347",
"block": 23312407,
"trx_in_block": 27,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T10:42:06",
"op": [
"vote",
{
"voter": "hackerzizon",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"weight": 100
}
]
}2018/06/14 10:41:57
2018/06/14 10:41:57
| parent author | eosbeijing |
| parent permlink | game-based-on-eos-pandafun-whitepaper |
| author | biblegateway |
| permlink | re-eosbeijing-game-based-on-eos-pandafun-whitepaper-20180614t104200547z |
| title | |
| body | God bless you. https://steemit.com/@biblegateway |
| json metadata | {"tags":["eos"],"links":["https://steemit.com/@biblegateway"],"app":"steemit/0.1"} |
| Transaction Info | Block #23312404/Trx 22d3c57d6e24235e67a8719e54e9ce8754f0482b |
View Raw JSON Data
{
"trx_id": "22d3c57d6e24235e67a8719e54e9ce8754f0482b",
"block": 23312404,
"trx_in_block": 52,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T10:41:57",
"op": [
"comment",
{
"parent_author": "eosbeijing",
"parent_permlink": "game-based-on-eos-pandafun-whitepaper",
"author": "biblegateway",
"permlink": "re-eosbeijing-game-based-on-eos-pandafun-whitepaper-20180614t104200547z",
"title": "",
"body": "God bless you. https://steemit.com/@biblegateway",
"json_metadata": "{\"tags\":[\"eos\"],\"links\":[\"https://steemit.com/@biblegateway\"],\"app\":\"steemit/0.1\"}"
}
]
}eosbeijingpublished a new post: game-based-on-eos-pandafun-whitepaper2018/06/14 10:41:33
eosbeijingpublished a new post: game-based-on-eos-pandafun-whitepaper
2018/06/14 10:41:33
| parent author | |
| parent permlink | eos |
| author | eosbeijing |
| permlink | game-based-on-eos-pandafun-whitepaper |
| title | Game based on EOS: PandaFun WhitePaper |
| body | PandaFun Game Whitepaper  1 ABSTRACT Blockchain industry has entered its 9th year since the first issue of Bitcoin whitepaper. Although the technology has been recognized worldwide, how to apply the technology into different scenarios is still under discussion. The bottleneck that stops the blockchain technology from further application is its performance has not yet met the requirements of large-scale commercials. One of the most important applicable scenarios of blockchain technology is Game. By using blockchain technology, games will become transparent and fair to every player. The developers are no longer able to manipulate key game data, not to mention direct cheating. However, sacrificing game experience and creating unbalanced player profit distribution becomes another issue developers encounter during their operation such as ‘xxxx-Kitty’, ‘xxxx-World’ and ‘xxxx-Planet’ The Whitepaper is going to introduce a game based on blockchain technology called PandaFun. The idea of the game is to bring every player ‘ABSOLUTIELY FAIR’ and ‘VALUE TRADEABLE’ at the same time with much better user experience than any competitors in the market. 2 TEAM ‘Panda X’ is a blockchain R&D team, we have been focusing on blockchain technology for many years and the reason why we start it as our first project is we highly believe the technology stands for the future. Different from others, we will not carry out ICO or any formats of financing for our project. We spent several months to study the feasibility of the game and invested from our own pocket to start the Research and Development. Hopefully PandaFun will bring players a brand new blockchain game experience. 3 INTRODUCTION PandaFun is an ‘EDS (Education Simulation)’ + ‘BSG (Board Strategy Game)’ blockchain game. In EDS part, players can nurture pandas and let the pets have different skills. In BSG part, one panda can be selected together with the player to participate in a World Tour. There are more than 20 skills for pandas to learn from and each of them may bring a unique advantage for their owners while gaming. Compare to some current blockchain games, PandaFun is much more interesting with a meaningful EDS element. A higher class of panda with premium skills will give players even more advantages in the World Tour but the game will not lose balance since we have adequate skill pool and random events. To avoid users’ fatigue, we also provide different maps in World Tour to ensure the freshness of the game. 3.1 Game Background Somewhere in the world, there is a mysterious Panda Canyon. Villagers live inside the Panda Canyon called Panda Village. One of their day-to-day hobbies is to have a World Tour with their pandas. In the game, players will act as a villager in Panda Village. Players can take their pandas to different scenes to strengthen them. Also, players can take one of their pandas with them to join World Tour. 3.2 Game Scenes - Main scene The main scene is a panorama of the Panda Canyon, includes: Zen Cliff, Budokan, Temple, Home, Pet Affair and World Tour.  - Zen Cliff: Zen Cliff is the place where pandas meditate which costs one Meditation Tea each time. By meditation, pandas have the chance to gain new skills.  - Budokan Budokan is the place where pandas train their skills which costs one Kung Fu Reel each time. By training, pandas can upgrade their skills (except for a few skills).  - Temple Temple is the place where pandas pray which costs a set of candles and one spirit from panda.Every pray can have the chance to obtain a newborn panda.Pandas will vanish when spirits become 0.  - Home Home is where players can review all personal information.  - Pet Affair Pet market is a place where pets can be traded. Players can buy and sell pandas here.  - World Tour Players can travel around the world with their pandas in World Tour. Players need to chip in with EOS at the beginning to play the World Tour. There are 3 players in the game and winner takes all! System will take out 3.5% from the award as upgradation cost of the game.  3.3 Pandas Pandas are pets in the game. Pandas at different level have different numbers of spirits and skills. The pandas are divided into the following levels: Diamond Panda:  Golden Panda:  Silver Panda:  Bronze Panda:  Panda:  3.4 Props When nurturing pandas, there are different props needed, which are:  3.5 Rules of World Tour 1.Three randomly matched players will battle in a random map selected from the map pool in each game 2.Every player has the same amount of initial cash. 3.Players can use panda skills before rolling the dice 4.The number of movement for each player on the map is decided by the dice number 5.When players step onto different blocks will trigger different events - Empty land blocks: Players can buy the land - Own land blocks: Players can upgrade the buildings - Competitors' land blocks: Players have to pay the tolls - Sprites: The sprite will append to the player and trigger its effect 6.When players own lands or buildings next to each others, it will trigger the Chain Effect (only for straight streets) - Chain Effect: The toll for the chained area will be the sum of individual buildings. 7.Players can use panda's skill on other players. 8.A player will lose the game is his cash is less than 0. 9.The rest players will continue the game and can buy the land or buildings belong to the loser at discounted price. 10.The winner of a round of World Tour is the one who survives to the end and will get corresponding game rewards. 3.6 Maps Maps within the game are designed base on different Continents and Countries. 3.7 Skills Skills are divided into 2 kinds, upgradeable and un-upgradeable. Un-upgradeable skills are listed below:  Upgradeable skills are listed below, the max level is Lv3:  3.8 Elves Different Elves will randomly appear in a game  4. Fairness and Security 4.1 Fairness The most important factor that will affect the fairness is random numbers. Since blockchain need certainty and consistency, we are not able to generate random numbers directly from blockchain. One solution is that the players firstly generate a random number, then calculate its hash and submit to smart contract. The player then submit the random number to smart contract and in the meantime smart contract verifies the random number to ensure that the player does not change it. Finally, the smart contract generates a random for the game to use. In PandaFun, we use similar method, there are 3 steps: 1. Players generate random numbers and submit theirs hash to smart contract 2. Players submit the random numbers to smart contract for verification. Smart contract verifies the random number and generates a random number based on the submitted numbers, and save it to a table for the player to query 3. Players query the random number and use it For each pray, meditatation and train, the player and the server both need to be involved into the process of random number generation. Otherwise, the player may manipulate the final result since the player submits the random number to the smart contract by himself. The 2 random numbers (from player and server) must be valid at the same time in order to generate the final random number. For each dicing, though there are multiple players, to ensure that the generated random number cannot be manipulated at any circumstances, the server needs to be involved as well. There must be at least 2 random numbers valid in order to generate the final random number. The flow chart is shown below:  4.2 Security The server does not save any player's private key. Players control their private key to play the game by using a browser extension called Scatter, similar to Metamask. Scatter is a way to sign transactions and provide private data without exposing keys and unnecessary information while interacting with web applications and communicating with the EOS Blockchain. |
| json metadata | {"tags":["eos","game"],"image":["https://cdn.steemitimages.com/DQmf1pjpm2dryyJFWyBxLT9ee5bs5z2NpAPLnVKmib15qQp/1.jpg","https://cdn.steemitimages.com/DQmRFsmv6GJWhsxyR5N9s9JbFwpLTNtVFs3QnNL5vH7n96V/2.jpg","https://cdn.steemitimages.com/DQmPruWsX5zyk5byb9z8jLwt8ZEFtdXFYxeAHBhYvCY4Jxc/3.png","https://cdn.steemitimages.com/DQmRUyiDYB8u4kTAHm7J33eqA5PqJfBhGyY6r63TPGvaQZr/4.png","https://cdn.steemitimages.com/DQmQYh1dkxjFznxuMJMeyjt81pjqMxXrLMhXp6tERPqGDad/5.png","https://cdn.steemitimages.com/DQmVVR37vkPkMzpfmYSFjovnZQMT1DYcQPg8kq6hDfbf6GK/6.png","https://cdn.steemitimages.com/DQmcE8WhJtR6zp1csFqBHanSs6mNgnnhPTcn8jqHY9YYked/7.png","https://cdn.steemitimages.com/DQmWPnmSMk54va6BTURryE9YHL4umtvp73G12ppAq3pGT5A/8.png","https://cdn.steemitimages.com/DQmV6Na2CBrg2kqqtpM414Y5cMKUYuhV6EUZXprNBuL4A69/%E6%8D%95%E8%8E%B71.PNG","https://cdn.steemitimages.com/DQmUzu42n86QCECGCEFCY9pGvGL1BtnRTzfnbhEzZ9uQrES/%E6%8D%95%E8%8E%B72.PNG","https://cdn.steemitimages.com/DQmNV1xnTvDyW6XaryW5oJAGYRNZwnRxi5bd5qHqtS8NXGf/%E6%8D%95%E8%8E%B73.PNG","https://cdn.steemitimages.com/DQmc8fRBKNDvxXuVt6w8rvhhQuL4kjyQuRDSw3RD6Rbydww/%E6%8D%95%E8%8E%B74.PNG","https://cdn.steemitimages.com/DQmdVW7BpMAZayCZa8HA3gay5YE1DAxySFGttq42qCubu1r/%E6%8D%95%E8%8E%B75.PNG","https://cdn.steemitimages.com/DQmcfytiUmfY4iwnWpa2QQCaQnUhbnqnGJgTWxa17UXBEwD/%E6%8D%95%E8%8E%B76.PNG","https://cdn.steemitimages.com/DQmQcfkcdByRmhoGH6KCpZySVFnyjyFdBPy8JpxpKVFSgY8/%E6%8D%95%E8%8E%B77.PNG","https://cdn.steemitimages.com/DQmY9qVvnN2exbtee1AXPNMJWPCPfFnuqTL5cJE55eHfqNY/%E6%8D%95%E8%8E%B78.PNG","https://cdn.steemitimages.com/DQmSnuZg8rNdUDA54xEweHyoWMzXRT5zPm17Qm6YZ73YCKw/%E6%8D%95%E8%8E%B79.PNG","https://cdn.steemitimages.com/DQmYU5Q61FNTGeb9VcdVcbhWSR8LkV58pqEAUTRUorL9JGT/9.png"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23312396/Trx f62743f3ecb7c03211ec190c21d79a9f7c9beebd |
View Raw JSON Data
{
"trx_id": "f62743f3ecb7c03211ec190c21d79a9f7c9beebd",
"block": 23312396,
"trx_in_block": 51,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T10:41:33",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "eosbeijing",
"permlink": "game-based-on-eos-pandafun-whitepaper",
"title": "Game based on EOS: PandaFun WhitePaper",
"body": "PandaFun Game Whitepaper\n\n\n\n1 ABSTRACT\nBlockchain industry has entered its 9th year since the first issue of Bitcoin whitepaper. Although the technology has been recognized worldwide, how to apply the technology into different scenarios is still under discussion. The bottleneck that stops the blockchain technology from further application is its performance has not yet met the requirements of large-scale commercials. \n\nOne of the most important applicable scenarios of blockchain technology is Game. By using blockchain technology, games will become transparent and fair to every player. The developers are no longer able to manipulate key game data, not to mention direct cheating. However, sacrificing game experience and creating unbalanced player profit distribution becomes another issue developers encounter during their operation such as ‘xxxx-Kitty’, ‘xxxx-World’ and ‘xxxx-Planet’ \n\nThe Whitepaper is going to introduce a game based on blockchain technology called PandaFun. The idea of the game is to bring every player ‘ABSOLUTIELY FAIR’ and ‘VALUE TRADEABLE’ at the same time with much better user experience than any competitors in the market.\n\n2 TEAM\n‘Panda X’ is a blockchain R&D team, we have been focusing on blockchain technology for many years and the reason why we start it as our first project is we highly believe the technology stands for the future. \n\nDifferent from others, we will not carry out ICO or any formats of financing for our project. We spent several months to study the feasibility of the game and invested from our own pocket to start the Research and Development. Hopefully PandaFun will bring players a brand new blockchain game experience. \n\n3 INTRODUCTION\nPandaFun is an ‘EDS (Education Simulation)’ + ‘BSG (Board Strategy Game)’ blockchain game. In EDS part, players can nurture pandas and let the pets have different skills. In BSG part, one panda can be selected together with the player to participate in a World Tour. There are more than 20 skills for pandas to learn from and each of them may bring a unique advantage for their owners while gaming. Compare to some current blockchain games, PandaFun is much more interesting with a meaningful EDS element. A higher class of panda with premium skills will give players even more advantages in the World Tour but the game will not lose balance since we have adequate skill pool and random events. To avoid users’ fatigue, we also provide different maps in World Tour to ensure the freshness of the game.\n\n3.1 Game Background\nSomewhere in the world, there is a mysterious Panda Canyon. Villagers live inside the Panda Canyon called Panda Village. One of their day-to-day hobbies is to have a World Tour with their pandas. \n\nIn the game, players will act as a villager in Panda Village. Players can take their pandas to different scenes to strengthen them. Also, players can take one of their pandas with them to join World Tour. \n\n3.2 Game Scenes \n- Main scene\nThe main scene is a panorama of the Panda Canyon, includes: Zen Cliff, Budokan, Temple, Home, Pet Affair and World Tour.\n\n\n- Zen Cliff: \nZen Cliff is the place where pandas meditate which costs one Meditation Tea each time. By meditation, pandas have the chance to gain new skills. \n\n\n- Budokan\nBudokan is the place where pandas train their skills which costs one Kung Fu Reel each time. By training, pandas can upgrade their skills (except for a few skills).\n\n\n- Temple\nTemple is the place where pandas pray which costs a set of candles and one spirit from panda.Every pray can have the chance to obtain a newborn panda.Pandas will vanish when spirits become 0. \n\n\n- Home\nHome is where players can review all personal information.\n\n\n- Pet Affair\nPet market is a place where pets can be traded. Players can buy and sell pandas here.\n\n\n- World Tour\nPlayers can travel around the world with their pandas in World Tour. Players need to chip in with EOS at the beginning to play the World Tour. There are 3 players in the game and winner takes all! System will take out 3.5% from the award as upgradation cost of the game.\n\n\n3.3 Pandas\nPandas are pets in the game. Pandas at different level have different numbers of spirits and skills. The pandas are divided into the following levels:\n\nDiamond Panda:\n\nGolden Panda:\n\nSilver Panda:\n\nBronze Panda:\n\nPanda:\n\n\n3.4 Props\nWhen nurturing pandas, there are different props needed, which are: \n\n\n3.5 Rules of World Tour\n1.Three randomly matched players will battle in a random map selected from the map pool in each game \n2.Every player has the same amount of initial cash. \n3.Players can use panda skills before rolling the dice \n4.The number of movement for each player on the map is decided by the dice number\n5.When players step onto different blocks will trigger different events \n- Empty land blocks: Players can buy the land\n- Own land blocks: Players can upgrade the buildings\n- Competitors' land blocks: Players have to pay the tolls \n- Sprites: The sprite will append to the player and trigger its effect \n6.When players own lands or buildings next to each others, it will trigger the Chain Effect (only for straight streets)\n- Chain Effect: The toll for the chained area will be the sum of individual buildings. \n7.Players can use panda's skill on other players. \n8.A player will lose the game is his cash is less than 0.\n9.The rest players will continue the game and can buy the land or buildings belong to the loser at discounted price. \n10.The winner of a round of World Tour is the one who survives to the end and will get corresponding game rewards.\n\n3.6 Maps\nMaps within the game are designed base on different Continents and Countries. \n\n3.7 Skills\nSkills are divided into 2 kinds, upgradeable and un-upgradeable.\nUn-upgradeable skills are listed below:\n\n\nUpgradeable skills are listed below, the max level is Lv3:\n\n\n3.8 Elves\nDifferent Elves will randomly appear in a game\n\n\n4. Fairness and Security\n4.1 Fairness\nThe most important factor that will affect the fairness is random numbers. Since blockchain need certainty and consistency, we are not able to generate random numbers directly from blockchain. One solution is that the players firstly generate a random number, then calculate its hash and submit to smart contract. The player then submit the random number to smart contract and in the meantime smart contract verifies the random number to ensure that the player does not change it. Finally, the smart contract generates a random for the game to use. \n\nIn PandaFun, we use similar method, there are 3 steps: \n\n1. Players generate random numbers and submit theirs hash to smart contract\n\n2. Players submit the random numbers to smart contract for verification. Smart contract verifies the random number and generates a random number based on the submitted numbers, and save it to a table for the player to query\n\n3. Players query the random number and use it\n\nFor each pray, meditatation and train, the player and the server both need to be involved into the process of random number generation. Otherwise, the player may manipulate the final result since the player submits the random number to the smart contract by himself. The 2 random numbers (from player and server) must be valid at the same time in order to generate the final random number. \n \nFor each dicing, though there are multiple players, to ensure that the generated random number cannot be manipulated at any circumstances, the server needs to be involved as well. There must be at least 2 random numbers valid in order to generate the final random number.\n\nThe flow chart is shown below: \n\n\n4.2 Security \nThe server does not save any player's private key. Players control their private key to play the game by using a browser extension called Scatter, similar to Metamask. \n\nScatter is a way to sign transactions and provide private data without exposing keys and unnecessary information while interacting with web applications and communicating with the EOS Blockchain.",
"json_metadata": "{\"tags\":[\"eos\",\"game\"],\"image\":[\"https://cdn.steemitimages.com/DQmf1pjpm2dryyJFWyBxLT9ee5bs5z2NpAPLnVKmib15qQp/1.jpg\",\"https://cdn.steemitimages.com/DQmRFsmv6GJWhsxyR5N9s9JbFwpLTNtVFs3QnNL5vH7n96V/2.jpg\",\"https://cdn.steemitimages.com/DQmPruWsX5zyk5byb9z8jLwt8ZEFtdXFYxeAHBhYvCY4Jxc/3.png\",\"https://cdn.steemitimages.com/DQmRUyiDYB8u4kTAHm7J33eqA5PqJfBhGyY6r63TPGvaQZr/4.png\",\"https://cdn.steemitimages.com/DQmQYh1dkxjFznxuMJMeyjt81pjqMxXrLMhXp6tERPqGDad/5.png\",\"https://cdn.steemitimages.com/DQmVVR37vkPkMzpfmYSFjovnZQMT1DYcQPg8kq6hDfbf6GK/6.png\",\"https://cdn.steemitimages.com/DQmcE8WhJtR6zp1csFqBHanSs6mNgnnhPTcn8jqHY9YYked/7.png\",\"https://cdn.steemitimages.com/DQmWPnmSMk54va6BTURryE9YHL4umtvp73G12ppAq3pGT5A/8.png\",\"https://cdn.steemitimages.com/DQmV6Na2CBrg2kqqtpM414Y5cMKUYuhV6EUZXprNBuL4A69/%E6%8D%95%E8%8E%B71.PNG\",\"https://cdn.steemitimages.com/DQmUzu42n86QCECGCEFCY9pGvGL1BtnRTzfnbhEzZ9uQrES/%E6%8D%95%E8%8E%B72.PNG\",\"https://cdn.steemitimages.com/DQmNV1xnTvDyW6XaryW5oJAGYRNZwnRxi5bd5qHqtS8NXGf/%E6%8D%95%E8%8E%B73.PNG\",\"https://cdn.steemitimages.com/DQmc8fRBKNDvxXuVt6w8rvhhQuL4kjyQuRDSw3RD6Rbydww/%E6%8D%95%E8%8E%B74.PNG\",\"https://cdn.steemitimages.com/DQmdVW7BpMAZayCZa8HA3gay5YE1DAxySFGttq42qCubu1r/%E6%8D%95%E8%8E%B75.PNG\",\"https://cdn.steemitimages.com/DQmcfytiUmfY4iwnWpa2QQCaQnUhbnqnGJgTWxa17UXBEwD/%E6%8D%95%E8%8E%B76.PNG\",\"https://cdn.steemitimages.com/DQmQcfkcdByRmhoGH6KCpZySVFnyjyFdBPy8JpxpKVFSgY8/%E6%8D%95%E8%8E%B77.PNG\",\"https://cdn.steemitimages.com/DQmY9qVvnN2exbtee1AXPNMJWPCPfFnuqTL5cJE55eHfqNY/%E6%8D%95%E8%8E%B78.PNG\",\"https://cdn.steemitimages.com/DQmSnuZg8rNdUDA54xEweHyoWMzXRT5zPm17Qm6YZ73YCKw/%E6%8D%95%E8%8E%B79.PNG\",\"https://cdn.steemitimages.com/DQmYU5Q61FNTGeb9VcdVcbhWSR8LkV58pqEAUTRUorL9JGT/9.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}blocktheoryupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains2018/06/14 00:46:33
blocktheoryupvoted (100.00%) @eosbeijing / shadowzone-private-smart-contracts-on-public-blockchains
2018/06/14 00:46:33
| voter | blocktheory |
| author | eosbeijing |
| permlink | shadowzone-private-smart-contracts-on-public-blockchains |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23300503/Trx d9a4e1d13df0c77535295fe5eb582b25f8b1e02d |
View Raw JSON Data
{
"trx_id": "d9a4e1d13df0c77535295fe5eb582b25f8b1e02d",
"block": 23300503,
"trx_in_block": 37,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-14T00:46:33",
"op": [
"vote",
{
"voter": "blocktheory",
"author": "eosbeijing",
"permlink": "shadowzone-private-smart-contracts-on-public-blockchains",
"weight": 10000
}
]
}2018/06/12 23:41:42
2018/06/12 23:41:42
| parent author | eoscafe |
| parent permlink | eos-cafe-voting-who-should-you-vote-for |
| author | eosbeijing |
| permlink | re-eoscafe-eos-cafe-voting-who-should-you-vote-for-20180612t234139146z |
| title | |
| body | Thank you for your support and trust. We will continue to make efforts with all of you to contribute to EOS ecosystem. |
| json metadata | {"tags":["eos"],"app":"steemit/0.1"} |
| Transaction Info | Block #23270411/Trx 0d6b68545c306974619806dee0520150f7160edb |
View Raw JSON Data
{
"trx_id": "0d6b68545c306974619806dee0520150f7160edb",
"block": 23270411,
"trx_in_block": 29,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-12T23:41:42",
"op": [
"comment",
{
"parent_author": "eoscafe",
"parent_permlink": "eos-cafe-voting-who-should-you-vote-for",
"author": "eosbeijing",
"permlink": "re-eoscafe-eos-cafe-voting-who-should-you-vote-for-20180612t234139146z",
"title": "",
"body": "Thank you for your support and trust. We will continue to make efforts with all of you to contribute to EOS ecosystem.",
"json_metadata": "{\"tags\":[\"eos\"],\"app\":\"steemit/0.1\"}"
}
]
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress62.15%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779062475
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779062475
},
"rc_account": {
"account": "eosbeijing",
"rc_manabar": {
"current_mana": "10164408779",
"last_update_time": 1779062475
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "10164408779"
}
}Account Metadata
| POSTING JSON METADATA | |
| profile | {"profile_image":"https://steemitimages.com/DQmQxj4V4w1RVj8D28Twvesj5z3YT3HxqjsLXJhL9H2VNnV/%E6%97%A0%E6%A0%87%E9%A2%98.jpg"} |
| JSON METADATA | |
| profile | {"profile_image":"https://steemitimages.com/DQmQxj4V4w1RVj8D28Twvesj5z3YT3HxqjsLXJhL9H2VNnV/%E6%97%A0%E6%A0%87%E9%A2%98.jpg"} |
{
"posting_json_metadata": {
"profile": {
"profile_image": "https://steemitimages.com/DQmQxj4V4w1RVj8D28Twvesj5z3YT3HxqjsLXJhL9H2VNnV/%E6%97%A0%E6%A0%87%E9%A2%98.jpg"
}
},
"json_metadata": {
"profile": {
"profile_image": "https://steemitimages.com/DQmQxj4V4w1RVj8D28Twvesj5z3YT3HxqjsLXJhL9H2VNnV/%E6%97%A0%E6%A0%87%E9%A2%98.jpg"
}
}
}Auth Keys
Owner
Single Signature
Public Keys
STM6d1jkKBdHYoYrLe8Edicqs4RJo9rFBiXcSZtEqTLfESGSgV4B91/1
Active
Single Signature
Public Keys
STM6GWPargBqk6Z5n4WPKvimhZQTgGQW3bFM3UMau3kBxsSAeuwjD1/1
Posting
Single Signature
Public Keys
STM8L3UC5aSSjrTtXdKvs3mQurhYuYNPaoA1wVVWc1tQno11AquA91/1
Memo
STM61GrXoyYFbPBmrtQt2GWwiMKsvPAtyUZMB3Sj5XEYcfydhtgYD
{
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6d1jkKBdHYoYrLe8Edicqs4RJo9rFBiXcSZtEqTLfESGSgV4B9",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6GWPargBqk6Z5n4WPKvimhZQTgGQW3bFM3UMau3kBxsSAeuwjD",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8L3UC5aSSjrTtXdKvs3mQurhYuYNPaoA1wVVWc1tQno11AquA9",
1
]
]
},
"memo": "STM61GrXoyYFbPBmrtQt2GWwiMKsvPAtyUZMB3Sj5XEYcfydhtgYD"
}Witness Votes
0 / 30
No active witness votes.
[]