VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.007USD
STEEM
0.000STEEM
SBD
0.000SBD
Effective Power
5.001SP
├── Own SP
0.125SP
└── Incoming DelegationsDeleg
+4.876SP
Detailed Balance
| STEEM | ||
| balance | 0.000STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.125SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 4.876SP | SP |
| Effective Power | 5.001SP | SP |
| Reward SP (pending) | 0.000SP | 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 | 0.000SBD | SBD |
{
"balance": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.000 STEEM",
"vesting_shares": "204.180603 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "7939.479203 VESTS",
"sbd_balance": "0.000 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.000 SBD",
"conversions": []
}Account Info
| name | jimi2018 |
| id | 820691 |
| rank | 504,108 |
| reputation | 322774517 |
| created | 2018-03-12T11:46:42 |
| recovery_account | steem |
| proxy | None |
| post_count | 21 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2018-08-23T06:24:15 |
| last_root_post | 2018-08-23T06:24:15 |
| last_vote_time | 2018-06-28T06:02:51 |
| 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 | 204.180603 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 7939.479203 VESTS |
| reward_vesting_balance | 0.000000 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 1970-01-01T00:00:00 |
| 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": 820691,
"name": "jimi2018",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5TgPEPhn2wfq4PdNnWQ5juSq2FSqJQmH6gtzRqqeSoxhzSiLbd",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7qCa9e5C9iHxxrFKUaroEqrTC63jXc94TJMERBv2tUCPRbu8vz",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8CMUS6BkCFCW1t2bVnezFST7jy6pY9954GjXqnLtUCvDQiU6YP",
1
]
]
},
"memo_key": "STM65HjC5nE976BFbk7R9pFFqQHn93GXkF9gtdxsExvWMadTimAMb",
"json_metadata": "{}",
"posting_json_metadata": "",
"proxy": "",
"last_owner_update": "1970-01-01T00:00:00",
"last_account_update": "1970-01-01T00:00:00",
"created": "2018-03-12T11:46:42",
"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": 21,
"can_vote": true,
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779069240
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779069240
},
"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": "0.000 SBD",
"reward_steem_balance": "0.000 STEEM",
"reward_vesting_balance": "0.000000 VESTS",
"reward_vesting_steem": "0.000 STEEM",
"vesting_shares": "204.180603 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "7939.479203 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": 0,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"witnesses_voted_for": 0,
"last_post": "2018-08-23T06:24:15",
"last_root_post": "2018-08-23T06:24:15",
"last_vote_time": "2018-06-28T06:02:51",
"post_bandwidth": 0,
"pending_claimed_accounts": 0,
"vesting_balance": "0.000 STEEM",
"reputation": 322774517,
"transfer_history": [],
"market_history": [],
"post_history": [],
"vote_history": [],
"other_history": [],
"witness_votes": [],
"tags_usage": [],
"guest_bloggers": [],
"rank": 504108
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2026/05/18 01:54:00
2026/05/18 01:54:00
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 7939.479203 VESTS |
| Transaction Info | Block #106145414/Trx 4efd019d9f08a2a232895c96c9f54dde2be8e509 |
View Raw JSON Data
{
"trx_id": "4efd019d9f08a2a232895c96c9f54dde2be8e509",
"block": 106145414,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-05-18T01:54:00",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "7939.479203 VESTS"
}
]
}2026/05/12 10:31:33
2026/05/12 10:31:33
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 5227.268798 VESTS |
| Transaction Info | Block #105983717/Trx d123c0e3f49833c4cab627a5ddaa0d11d2c6780b |
View Raw JSON Data
{
"trx_id": "d123c0e3f49833c4cab627a5ddaa0d11d2c6780b",
"block": 105983717,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-05-12T10:31:33",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "5227.268798 VESTS"
}
]
}2026/04/26 01:12:15
2026/04/26 01:12:15
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 7951.994959 VESTS |
| Transaction Info | Block #105513018/Trx d21dd845233fb33dc7293a2984e98cdba655baca |
View Raw JSON Data
{
"trx_id": "d21dd845233fb33dc7293a2984e98cdba655baca",
"block": 105513018,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-04-26T01:12:15",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "7951.994959 VESTS"
}
]
}2026/01/23 12:13:42
2026/01/23 12:13:42
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 5268.815617 VESTS |
| Transaction Info | Block #102857117/Trx 1efba8051059d9dfee84db6b996f3fc31a3f4f8b |
View Raw JSON Data
{
"trx_id": "1efba8051059d9dfee84db6b996f3fc31a3f4f8b",
"block": 102857117,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-01-23T12:13:42",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "5268.815617 VESTS"
}
]
}2024/12/17 07:30:27
2024/12/17 07:30:27
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 5433.034814 VESTS |
| Transaction Info | Block #91303468/Trx 27571c76066936d24502a0902ee9087b4834cabd |
View Raw JSON Data
{
"trx_id": "27571c76066936d24502a0902ee9087b4834cabd",
"block": 91303468,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2024-12-17T07:30:27",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "5433.034814 VESTS"
}
]
}2023/11/13 23:12:33
2023/11/13 23:12:33
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 5602.168346 VESTS |
| Transaction Info | Block #79857654/Trx 1ca2e742da125c474bbec31c04df5367a2357ed8 |
View Raw JSON Data
{
"trx_id": "1ca2e742da125c474bbec31c04df5367a2357ed8",
"block": 79857654,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-11-13T23:12:33",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "5602.168346 VESTS"
}
]
}2023/09/21 23:46:36
2023/09/21 23:46:36
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 8539.447132 VESTS |
| Transaction Info | Block #78350159/Trx 3ee6a87c94fffde01caa99d74f2b779e1e2a6798 |
View Raw JSON Data
{
"trx_id": "3ee6a87c94fffde01caa99d74f2b779e1e2a6798",
"block": 78350159,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-09-21T23:46:36",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "8539.447132 VESTS"
}
]
}2022/11/03 13:19:00
2022/11/03 13:19:00
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 8761.128570 VESTS |
| Transaction Info | Block #69115187/Trx d197989f54d538d9331637729de6c646aeecb76a |
View Raw JSON Data
{
"trx_id": "d197989f54d538d9331637729de6c646aeecb76a",
"block": 69115187,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-11-03T13:19:00",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "8761.128570 VESTS"
}
]
}2022/01/17 16:42:30
2022/01/17 16:42:30
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 8981.363706 VESTS |
| Transaction Info | Block #60816282/Trx 26a218b819e8286d514131dd2655107389e1bc2a |
View Raw JSON Data
{
"trx_id": "26a218b819e8286d514131dd2655107389e1bc2a",
"block": 60816282,
"trx_in_block": 29,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-01-17T16:42:30",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "8981.363706 VESTS"
}
]
}2021/06/14 02:18:00
2021/06/14 02:18:00
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 9165.430459 VESTS |
| Transaction Info | Block #54609496/Trx 7f3bc5d4e6517d02123eeca3d1545c61938289f1 |
View Raw JSON Data
{
"trx_id": "7f3bc5d4e6517d02123eeca3d1545c61938289f1",
"block": 54609496,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-06-14T02:18:00",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "9165.430459 VESTS"
}
]
}2020/12/11 12:34:48
2020/12/11 12:34:48
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 9352.852433 VESTS |
| Transaction Info | Block #49356895/Trx 63e202073821f1e0ceca4d50cbabb4cd4374243b |
View Raw JSON Data
{
"trx_id": "63e202073821f1e0ceca4d50cbabb4cd4374243b",
"block": 49356895,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-11T12:34:48",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "9352.852433 VESTS"
}
]
}2020/12/06 06:11:36
2020/12/06 06:11:36
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 1912.543513 VESTS |
| Transaction Info | Block #49208450/Trx f9f3f0694e6e0c7b5bb277abda3122ae4e6c2cf0 |
View Raw JSON Data
{
"trx_id": "f9f3f0694e6e0c7b5bb277abda3122ae4e6c2cf0",
"block": 49208450,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-06T06:11:36",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "1912.543513 VESTS"
}
]
}2020/12/05 16:13:00
2020/12/05 16:13:00
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 9359.060287 VESTS |
| Transaction Info | Block #49191992/Trx ca84e6267305335fcf4892c2b3362cb530d384b7 |
View Raw JSON Data
{
"trx_id": "ca84e6267305335fcf4892c2b3362cb530d384b7",
"block": 49191992,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-05T16:13:00",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "9359.060287 VESTS"
}
]
}2020/11/02 18:38:36
2020/11/02 18:38:36
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #48261341/Trx 2b0e2867e998f98c4ab5d35e57621b5d3d79a63d |
View Raw JSON Data
{
"trx_id": "2b0e2867e998f98c4ab5d35e57621b5d3d79a63d",
"block": 48261341,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-11-02T18:38:36",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "1920.017158 VESTS"
}
]
}2020/05/09 07:10:27
2020/05/09 07:10:27
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 9561.865646 VESTS |
| Transaction Info | Block #43218717/Trx d2f52d546e3258092d8c1bd56cdaa52b085fc13f |
View Raw JSON Data
{
"trx_id": "d2f52d546e3258092d8c1bd56cdaa52b085fc13f",
"block": 43218717,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-09T07:10:27",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "9561.865646 VESTS"
}
]
}2020/05/08 10:59:36
2020/05/08 10:59:36
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #43195065/Trx d09eb008e855e426031d8e71af6181b1822876d3 |
View Raw JSON Data
{
"trx_id": "d09eb008e855e426031d8e71af6181b1822876d3",
"block": 43195065,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-08T10:59:36",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "1953.311140 VESTS"
}
]
}2020/03/12 12:42:48
2020/03/12 12:42:48
| parent author | jimi2018 |
| parent permlink | 5zdart-eos |
| author | steemitboard |
| permlink | steemitboard-notify-jimi2018-20200312t124248000z |
| title | |
| body | Congratulations @jimi2018! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@jimi2018/birthday2.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@jimi2018) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=jimi2018)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/downvote-challenge-add-up-to-3-funny-badges-to-your-board"><img src="https://steemitimages.com/64x128/https://steemitimages.com/0x0/"></a></td><td><a href="https://steemit.com/steemitboard/@steemitboard/downvote-challenge-add-up-to-3-funny-badges-to-your-board">Downvote challenge - Add up to 3 funny badges to your board</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 #41587192/Trx 203c2ab2ff13e7a5a0c36cba9599117ddc11bba8 |
View Raw JSON Data
{
"trx_id": "203c2ab2ff13e7a5a0c36cba9599117ddc11bba8",
"block": 41587192,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-03-12T12:42:48",
"op": [
"comment",
{
"parent_author": "jimi2018",
"parent_permlink": "5zdart-eos",
"author": "steemitboard",
"permlink": "steemitboard-notify-jimi2018-20200312t124248000z",
"title": "",
"body": "Congratulations @jimi2018! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@jimi2018/birthday2.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@jimi2018) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=jimi2018)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemitboard/@steemitboard/downvote-challenge-add-up-to-3-funny-badges-to-your-board\"><img src=\"https://steemitimages.com/64x128/https://steemitimages.com/0x0/\"></a></td><td><a href=\"https://steemit.com/steemitboard/@steemitboard/downvote-challenge-add-up-to-3-funny-badges-to-your-board\">Downvote challenge - Add up to 3 funny badges to your board</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\"]}"
}
]
}2019/11/01 08:08:03
2019/11/01 08:08:03
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 9668.264729 VESTS |
| Transaction Info | Block #37788542/Trx 986676fd2dc97e147901942d1d5d5f0899d510b0 |
View Raw JSON Data
{
"trx_id": "986676fd2dc97e147901942d1d5d5f0899d510b0",
"block": 37788542,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-11-01T08:08:03",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "9668.264729 VESTS"
}
]
}2019/03/12 14:29:18
2019/03/12 14:29:18
| parent author | jimi2018 |
| parent permlink | 5zdart-eos |
| author | steemitboard |
| permlink | steemitboard-notify-jimi2018-20190312t142917000z |
| title | |
| body | Congratulations @jimi2018! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@jimi2018/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/@jimi2018) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=jimi2018)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmYGN7R653u4hDFyq1hM7iuhr2bdAP1v2ApACDNtecJAZ5/image.png"></a></td><td><a href="https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter">Are you a DrugWars early adopter? Benvenuto in famiglia!</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 #31090825/Trx ac0553c45e375bb09e298c3b3b7eb4295a29e319 |
View Raw JSON Data
{
"trx_id": "ac0553c45e375bb09e298c3b3b7eb4295a29e319",
"block": 31090825,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-03-12T14:29:18",
"op": [
"comment",
{
"parent_author": "jimi2018",
"parent_permlink": "5zdart-eos",
"author": "steemitboard",
"permlink": "steemitboard-notify-jimi2018-20190312t142917000z",
"title": "",
"body": "Congratulations @jimi2018! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@jimi2018/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/@jimi2018) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=jimi2018)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmYGN7R653u4hDFyq1hM7iuhr2bdAP1v2ApACDNtecJAZ5/image.png\"></a></td><td><a href=\"https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter\">Are you a DrugWars early adopter? Benvenuto in famiglia!</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\"]}"
}
]
}2018/11/26 18:01:00
2018/11/26 18:01:00
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 9865.740106 VESTS |
| Transaction Info | Block #28044561/Trx 8520fdbcbfec63da43a318cf253e5f079781eeca |
View Raw JSON Data
{
"trx_id": "8520fdbcbfec63da43a318cf253e5f079781eeca",
"block": 28044561,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-11-26T18:01:00",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "9865.740106 VESTS"
}
]
}fawaazghostupvoted (100.00%) @jimi2018 / 5zdart-eos2018/08/23 06:55:45
fawaazghostupvoted (100.00%) @jimi2018 / 5zdart-eos
2018/08/23 06:55:45
| voter | fawaazghost |
| author | jimi2018 |
| permlink | 5zdart-eos |
| weight | 10000 (100.00%) |
| Transaction Info | Block #25312758/Trx d867e142b0296ad479f3f9bfcef3c4897564dd20 |
View Raw JSON Data
{
"trx_id": "d867e142b0296ad479f3f9bfcef3c4897564dd20",
"block": 25312758,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-23T06:55:45",
"op": [
"vote",
{
"voter": "fawaazghost",
"author": "jimi2018",
"permlink": "5zdart-eos",
"weight": 10000
}
]
}fastresteemupvoted (1.00%) @jimi2018 / 5zdart-eos2018/08/23 06:24:24
fastresteemupvoted (1.00%) @jimi2018 / 5zdart-eos
2018/08/23 06:24:24
| voter | fastresteem |
| author | jimi2018 |
| permlink | 5zdart-eos |
| weight | 100 (1.00%) |
| Transaction Info | Block #25312131/Trx d5b6cf4f8abc9d36e1a8ddcaa1f4f5e53f7eda31 |
View Raw JSON Data
{
"trx_id": "d5b6cf4f8abc9d36e1a8ddcaa1f4f5e53f7eda31",
"block": 25312131,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-23T06:24:24",
"op": [
"vote",
{
"voter": "fastresteem",
"author": "jimi2018",
"permlink": "5zdart-eos",
"weight": 100
}
]
}jimi2018published a new post: 5zdart-eos2018/08/23 06:24:15
jimi2018published a new post: 5zdart-eos
2018/08/23 06:24:15
| parent author | |
| parent permlink | eos |
| author | jimi2018 |
| permlink | 5zdart-eos |
| title | 谢谢分享,安利个eos教程 |
| body | EOS智能合约与DApp开发入门教程: http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=823steemit |
| json metadata | {"tags":["eos","dapp","blockchain","smart","contract"],"links":["http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=823steemit"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #25312128/Trx 342faa0fead953d05a1c8bcf00530e72c6c44fe2 |
View Raw JSON Data
{
"trx_id": "342faa0fead953d05a1c8bcf00530e72c6c44fe2",
"block": 25312128,
"trx_in_block": 10,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-23T06:24:15",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "eos",
"author": "jimi2018",
"permlink": "5zdart-eos",
"title": "谢谢分享,安利个eos教程",
"body": "EOS智能合约与DApp开发入门教程:\n\nhttp://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=823steemit",
"json_metadata": "{\"tags\":[\"eos\",\"dapp\",\"blockchain\",\"smart\",\"contract\"],\"links\":[\"http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=823steemit\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/07/30 06:22:42
2018/07/30 06:22:42
| parent author | ldy3413 |
| parent permlink | eos-05-nodeos |
| author | jimi2018 |
| permlink | re-ldy3413-eos-05-nodeos-20180730t062615280z |
| title | |
| body | EOS智能合约与DApp开发入门教程: http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=730steemit 本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。 |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=730steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #24621150/Trx 25fb4d044f515921459ac3904e9df9c05ba0970e |
View Raw JSON Data
{
"trx_id": "25fb4d044f515921459ac3904e9df9c05ba0970e",
"block": 24621150,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-30T06:22:42",
"op": [
"comment",
{
"parent_author": "ldy3413",
"parent_permlink": "eos-05-nodeos",
"author": "jimi2018",
"permlink": "re-ldy3413-eos-05-nodeos-20180730t062615280z",
"title": "",
"body": "EOS智能合约与DApp开发入门教程:\n\nhttp://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=730steemit\n\n本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=730steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/07/27 08:17:24
2018/07/27 08:17:24
| voter | ifttt |
| author | jimi2018 |
| permlink | eos |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24537493/Trx 8ea66a31eafdd11b401e569dfc4279b4070e79f3 |
View Raw JSON Data
{
"trx_id": "8ea66a31eafdd11b401e569dfc4279b4070e79f3",
"block": 24537493,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T08:17:24",
"op": [
"vote",
{
"voter": "ifttt",
"author": "jimi2018",
"permlink": "eos",
"weight": 10000
}
]
}leiyureplied to @jimi2018 / re-jimi2018-eos-20180727t071707315z2018/07/27 07:17:09
leiyureplied to @jimi2018 / re-jimi2018-eos-20180727t071707315z
2018/07/27 07:17:09
| parent author | jimi2018 |
| parent permlink | eos |
| author | leiyu |
| permlink | re-jimi2018-eos-20180727t071707315z |
| title | |
| body | 普通电脑能不能下载EOSIO最新windows版本呢? |
| json metadata | {"tags":["blockchain"],"app":"steemit/0.1"} |
| Transaction Info | Block #24536288/Trx b1337f6ef09bb82c6d5be1057b47198e703d0322 |
View Raw JSON Data
{
"trx_id": "b1337f6ef09bb82c6d5be1057b47198e703d0322",
"block": 24536288,
"trx_in_block": 22,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T07:17:09",
"op": [
"comment",
{
"parent_author": "jimi2018",
"parent_permlink": "eos",
"author": "leiyu",
"permlink": "re-jimi2018-eos-20180727t071707315z",
"title": "",
"body": "普通电脑能不能下载EOSIO最新windows版本呢?",
"json_metadata": "{\"tags\":[\"blockchain\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/07/27 07:10:57
2018/07/27 07:10:57
| voter | ubg |
| author | jimi2018 |
| permlink | eos |
| weight | 100 (1.00%) |
| Transaction Info | Block #24536164/Trx 312aaaf7ff760577c495b077eeeedf813ac718f3 |
View Raw JSON Data
{
"trx_id": "312aaaf7ff760577c495b077eeeedf813ac718f3",
"block": 24536164,
"trx_in_block": 68,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T07:10:57",
"op": [
"vote",
{
"voter": "ubg",
"author": "jimi2018",
"permlink": "eos",
"weight": 100
}
]
}cheetahreplied to @jimi2018 / cheetah-re-jimi2018eos2018/07/27 07:10:09
cheetahreplied to @jimi2018 / cheetah-re-jimi2018eos
2018/07/27 07:10:09
| parent author | jimi2018 |
| parent permlink | eos |
| author | cheetah |
| permlink | cheetah-re-jimi2018eos |
| title | |
| body | Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in: https://my.oschina.net/u/2275217/blog/1862854 |
| json metadata | |
| Transaction Info | Block #24536148/Trx e629dd00d8ccddf8e94c2e69f5fa6558180a0340 |
View Raw JSON Data
{
"trx_id": "e629dd00d8ccddf8e94c2e69f5fa6558180a0340",
"block": 24536148,
"trx_in_block": 50,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T07:10:09",
"op": [
"comment",
{
"parent_author": "jimi2018",
"parent_permlink": "eos",
"author": "cheetah",
"permlink": "cheetah-re-jimi2018eos",
"title": "",
"body": "Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:\nhttps://my.oschina.net/u/2275217/blog/1862854",
"json_metadata": ""
}
]
}2018/07/27 07:10:06
2018/07/27 07:10:06
| voter | cheetah |
| author | jimi2018 |
| permlink | eos |
| weight | 8 (0.08%) |
| Transaction Info | Block #24536147/Trx 97ee1737a1c5200718b8ef9fd336768f714f046b |
View Raw JSON Data
{
"trx_id": "97ee1737a1c5200718b8ef9fd336768f714f046b",
"block": 24536147,
"trx_in_block": 25,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T07:10:06",
"op": [
"vote",
{
"voter": "cheetah",
"author": "jimi2018",
"permlink": "eos",
"weight": 8
}
]
}2018/07/27 07:10:00
2018/07/27 07:10:00
| parent author | |
| parent permlink | blockchain |
| author | jimi2018 |
| permlink | eos |
| title | 柚子EOS开发环境搭建 |
| body | 本文主要介绍如何构建在EOS平台运行的DApp开发环境。 ### EOSIO构成组件 EOSIO是由三个component组成的。  - nodeos:管理区块链节点的组件。 - keosd:管理钱包的组件。 - cleos:控制区块链和钱包CLI工具。 ### 安装EOSIO 此文档以MacOS Darwin 10.12为基准。 在EOSIO的github库下载源码。 ``` $ git clone https://github.com/EOSIO/eos --recursive ``` 要安装xcode和homebrew代码。如果还没有安装的情况,先设置`xcode`和`homebrew`。 - xcode : https://developer.apple.com/xcode/ - homebrew : https://brew.sh 源代码包含构建脚本及构建实现。 ``` $ cd eos $ ./eosio_build.sh ``` 如果成功的话,就会出现下面的信息。 ``` [100%] Linking CXX executable unit_test [100%] Built target unit_test _______ _______ _______ _________ _______ ( ____ \( ___ )( ____ \\__ __/( ___ ) | ( \/| ( ) || ( \/ ) ( | ( ) | | (__ | | | || (_____ | | | | | | | __) | | | |(_____ ) | | | | | | | ( | | | | ) | | | | | | | | (____/\| (___) |/\____) |___) (___| (___) | (_______/(_______)\_______)\_______/(_______) EOSIO has been successfully built. 00:11:21 To verify your installation run the following commands: /usr/local/bin/mongod -f /usr/local/etc/mongod.conf & cd /Users/scion/git/eos/build; make test For more information: EOSIO website: https://eos.io EOSIO Telegram channel @ https://t.me/EOSProject EOSIO resources: https://eos.io/resources/ EOSIO Stack Exchange: https://eosio.stackexchange.com EOSIO wiki: https://github.com/EOSIO/eos/wiki ``` **解决问题** - 如果build过程中出现这样的error时: ``` CMake Error at /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Failed to find Gettext libintl (missing: Intl_INCLUDE_DIR) Call Stack (most recent call first): /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindIntl.cmake:47 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) programs/cleos/CMakeLists.txt:29 (find_package) ``` 应该是`homebrew`的`gettext`连接到了不正确的版本,更改连接信息就可以了: ``` $ brew link gettext — force ``` 在环境变量文件`(~/.profile)`添加`gettoxt path`: ``` export PATH=”/usr/local/opt/gettext/bin:$PATH” ``` 参考:https://github.com/EOSIO/eos/issues/2174 - 也有可能发生这种情况: ``` Mac OS 10.13.3 build error “path mongo-cxx-driver already exists” ``` 这样解决: ``` sudo rm -rf /tmp/mongo* cd /path/to/eos rm -rf build/ git pull git submodule update — init — recursive ./eosio_build.sh ``` 参考:https://github.com/EOSIO/eos/issues/3197 ### 验证 安装顺利完成。为了验证,执行下测试脚本。 ``` $ /usr/local/bin/mongod -f /usr/local/etc/mongod.conf & $ cd build/ $ make test Running tests... Test project /Users/scion/git/eos/build Start 1: test_cypher_suites 1/35 Test #1: test_cypher_suites ................... Passed 0.04 sec Start 2: validate_simple.token_abi 2/35 Test #2: validate_simple.token_abi ............ Passed 0.08 sec Start 3: validate_eosio.token_abi ... 34/35 Test #34: restart-scenarios-test-hard_replay ... Passed 151.83 sec Start 35: validate_dirty_db_test 35/35 Test #35: validate_dirty_db_test ............... Passed 4.42 sec 100% tests passed, 0 tests failed out of 35 ``` 下面完成安装: ``` $ cd build $ sudo make install ``` ### 运行EOSIO 试着运行EOSIO的组件吧。这是为了构建开发环境,所以可以先用一个节点。 #### nodeos 用带有`option`的命令直接执行就行了 ``` $ nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin ``` 其中: - e : 区块生成 - p eosio : 区块生产者名称 — plugin eosio::chain_api_plugin : 区块链相关API插件 — plugin eosio::history_api_plugin : 历史记录相关API插件 可以用配置文件替换参数。 - config file位置: `~/Library/Application Support/eosio/nodeos/config/config.ini` - 当`nodeos`第一次运行时,该文件自动生成。 ``` $ vi ~/Library/Application\ Support/eosio/nodeos/config/config.ini ... # enable-stale-production = false enable-stale-production = true ... # producer-name = producer-name = eosio ... plugin = eosio::chain_api_plugin plugin = eosio::history_api_plugin ... ``` 执行`nodeos` : ``` $ nodeos ``` 如果运行正常,可以看到在控制台上0.5秒生成block的信息。 为了确认`nodeos`是否正常运行,让我们试试应用程序API接口。 在运行于`8888`端口的应用软件服务上试试`HTTP Request`: ``` $ curl -k -v 'http://127.0.0.1:8888/v1/chain/get_info' -X GET Note: Unnecessary use of -X or --request, GET is already inferred. * Trying 127.0.0.1... * TCP_NODELAY set * Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0) > GET /v1/chain/get_info HTTP/1.1 > Host: 127.0.0.1:8888 > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 200 OK < Connection: close < Content-Length: 529 < Content-type: application/json < Server: WebSocket++/0.7.0 < {"server_version":"012dc012","chain_id":"cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f","head_block_num":363,"last_irreversible_block_num":362,"last_irreversible_block_id":"0000016ad0238cef2f6a8de2098115ba155cbbc535122912a7a62f66097adbd6","head_block_id":"0000016b8cbb9154a759f2e61968fc1069fcf0ef9468886614d0538a97d96c61","head_block_time":"2018-06-12T07:10:59","head_block_producer":"eosio","virtual_block_cpu_limit":287075,"virtual_block_net_limit":1506023,"block_cpu_limit":199900,"block_net_limit":1048576} ``` 或是利用`cleos`命令执行。 ``` $ cleos get info { "server_version": "012dc012", "chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f", "head_block_num": 580, "last_irreversible_block_num": 579, "last_irreversible_block_id": "000002436a1baaeb366b55995ddad7de0822f177d60a8c6e336e3f5fcb18ecc5", "head_block_id": "00000244e6923239c0649ddada0dd47a2df80df13fa825275df9ddac975e6162", "head_block_time": "2018-06-12T07:12:48", "head_block_producer": "eosio", "virtual_block_cpu_limit": 356561, "virtual_block_net_limit": 1871085, "block_cpu_limit": 199900, "block_net_limit": 1048576 } ``` ### keosd 同样用带有`option`的命令直接执行就行了 ``` $ keosd — http-server-address=127.0.0.1:8900 ``` - http-server-address : REST API,`nodeos`默认端口是8888。`cleos`默认端口考虑使用8900,URL不可用。 只能通过替换`keosd`配置文件选项来运行。 - 配置文件位置:`~/eosio-wallet/config.ini`。 - 第一次`keosd`操作,文件自动生成。 ``` $ vi ~/eosio-wallet/config.ini # http-server-address = 127.0.0.1:8888 http-server-address = 127.0.0.1:8900 ``` 执行`keosd`: ``` $ keosd ``` 在运行于`8900`端口的应用软件服务上试试`HTTP Request`: ``` $ curl -k -v ‘http://127.0.0.1:8900/v1/wallet/list_wallets' -X GET Note: Unnecessary use of -X or — request, GET is already inferred. * Trying 127.0.0.1… * TCP_NODELAY set * Connected to 127.0.0.1 (127.0.0.1) port 8900 (#0) > GET /v1/wallet/list_wallets HTTP/1.1 > Host: 127.0.0.1:8900 > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 200 OK < Connection: close < Content-Length: 2 < Content-type: application/json < Server: WebSocket++/0.7.0 < [] ``` 或者使用`cleos`命令运行: ``` $ cleos wallet list Wallets: [] ``` `nodeos`和`keosd`可以正常工作,现在可以使用EOSIO服务了。 参考文件是EOSIO[官方wiki文档](https://github.com/eosio/eos/wiki),参考了[本地环境的安装](https://github.com/eosio/eos/wiki/Local-Environment)。 另:《EOS智能合约与DApp开发入门》教程已经上线,爱学习等不及的可以抓紧体验一下: [EOS教程](http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=727steemit) 这个教程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用React和EOS的各知识点完成一个便签DApp的开发。 博客原文在:[这里](http://blog.hubwiz.com/2018/07/23/EOS-development-environment/) |
| json metadata | {"tags":["blockchain","eos","dapp","smartcontracts","environment"],"image":["http://blog.hubwiz.com/2018/07/23/EOS-development-environment/eos-dev-env.png"],"links":["https://developer.apple.com/xcode/","https://brew.sh","https://github.com/EOSIO/eos/issues/2174","https://github.com/EOSIO/eos/issues/3197","https://github.com/eosio/eos/wiki","https://github.com/eosio/eos/wiki/Local-Environment","http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=727steemit","http://blog.hubwiz.com/2018/07/23/EOS-development-environment/"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #24536145/Trx 240361b6745a0bcfd0cc4e9234891ca1a2cc84c0 |
View Raw JSON Data
{
"trx_id": "240361b6745a0bcfd0cc4e9234891ca1a2cc84c0",
"block": 24536145,
"trx_in_block": 10,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-27T07:10:00",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "jimi2018",
"permlink": "eos",
"title": "柚子EOS开发环境搭建",
"body": "本文主要介绍如何构建在EOS平台运行的DApp开发环境。\n\n### EOSIO构成组件\n\nEOSIO是由三个component组成的。\n\n\n\n- nodeos:管理区块链节点的组件。\n- keosd:管理钱包的组件。\n- cleos:控制区块链和钱包CLI工具。\n\n\n### 安装EOSIO\n\n此文档以MacOS Darwin 10.12为基准。\n\n在EOSIO的github库下载源码。\n\n```\n$ git clone https://github.com/EOSIO/eos --recursive\n```\n\n要安装xcode和homebrew代码。如果还没有安装的情况,先设置`xcode`和`homebrew`。\n\n - xcode : https://developer.apple.com/xcode/\n - homebrew : https://brew.sh\n\n源代码包含构建脚本及构建实现。\n\n```\n$ cd eos\n$ ./eosio_build.sh\n```\n\n如果成功的话,就会出现下面的信息。\n\n```\n[100%] Linking CXX executable unit_test\n\n[100%] Built target unit_test\n\n_______ _______ _______ _________ _______\n\n( ____ \\( ___ )( ____ \\\\__ __/( ___ )\n\n| ( \\/| ( ) || ( \\/ ) ( | ( ) |\n\n| (__ | | | || (_____ | | | | | |\n\n| __) | | | |(_____ ) | | | | | |\n\n| ( | | | | ) | | | | | | |\n\n| (____/\\| (___) |/\\____) |___) (___| (___) |\n\n(_______/(_______)\\_______)\\_______/(_______)\n\nEOSIO has been successfully built. 00:11:21\n\nTo verify your installation run the following commands:\n\n/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &\n\ncd /Users/scion/git/eos/build; make test\n\nFor more information:\n\nEOSIO website: https://eos.io\n\nEOSIO Telegram channel @ https://t.me/EOSProject\n\nEOSIO resources: https://eos.io/resources/\n\nEOSIO Stack Exchange: https://eosio.stackexchange.com\n\nEOSIO wiki: https://github.com/EOSIO/eos/wiki\n```\n\n**解决问题**\n\n- 如果build过程中出现这样的error时:\n\n```\nCMake Error at /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):\n Failed to find Gettext libintl (missing: Intl_INCLUDE_DIR)\nCall Stack (most recent call first):\n /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)\n /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindIntl.cmake:47 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)\n programs/cleos/CMakeLists.txt:29 (find_package)\n```\n\n应该是`homebrew`的`gettext`连接到了不正确的版本,更改连接信息就可以了:\n\n```\n$ brew link gettext — force\n```\n\n在环境变量文件`(~/.profile)`添加`gettoxt path`:\n\n```\nexport PATH=”/usr/local/opt/gettext/bin:$PATH”\n```\n\n参考:https://github.com/EOSIO/eos/issues/2174\n\n\n- 也有可能发生这种情况:\n\n```\nMac OS 10.13.3 build error “path mongo-cxx-driver already exists”\n```\n\n这样解决:\n\n```\nsudo rm -rf /tmp/mongo*\ncd /path/to/eos\nrm -rf build/\ngit pull\ngit submodule update — init — recursive\n./eosio_build.sh\n```\n\n参考:https://github.com/EOSIO/eos/issues/3197\n\n### 验证\n\n安装顺利完成。为了验证,执行下测试脚本。\n\n```\n$ /usr/local/bin/mongod -f /usr/local/etc/mongod.conf &\n\n$ cd build/\n\n$ make test\n\nRunning tests...\n\nTest project /Users/scion/git/eos/build\n\nStart 1: test_cypher_suites\n\n1/35 Test #1: test_cypher_suites ................... Passed 0.04 sec\n\nStart 2: validate_simple.token_abi\n\n2/35 Test #2: validate_simple.token_abi ............ Passed 0.08 sec\n\nStart 3: validate_eosio.token_abi\n\n...\n\n34/35 Test #34: restart-scenarios-test-hard_replay ... Passed 151.83 sec\n\nStart 35: validate_dirty_db_test\n\n35/35 Test #35: validate_dirty_db_test ............... Passed 4.42 sec\n\n100% tests passed, 0 tests failed out of 35\n```\n\n下面完成安装:\n\n```\n$ cd build\n\n$ sudo make install\n```\n\n### 运行EOSIO\n\n试着运行EOSIO的组件吧。这是为了构建开发环境,所以可以先用一个节点。\n\n#### nodeos\n\n用带有`option`的命令直接执行就行了\n\n```\n$ nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin\n```\n\n其中:\n - e : 区块生成\n - p eosio : 区块生产者名称\n — plugin eosio::chain_api_plugin : 区块链相关API插件\n — plugin eosio::history_api_plugin : 历史记录相关API插件\n\n可以用配置文件替换参数。\n - config file位置: `~/Library/Application Support/eosio/nodeos/config/config.ini`\n - 当`nodeos`第一次运行时,该文件自动生成。\n\n```\n$ vi ~/Library/Application\\ Support/eosio/nodeos/config/config.ini\n \n...\n# enable-stale-production = false\nenable-stale-production = true\n...\n# producer-name =\nproducer-name = eosio\n...\nplugin = eosio::chain_api_plugin\nplugin = eosio::history_api_plugin\n...\n```\n\n执行`nodeos` :\n\n```\n$ nodeos\n```\n\n如果运行正常,可以看到在控制台上0.5秒生成block的信息。\n\n为了确认`nodeos`是否正常运行,让我们试试应用程序API接口。\n\n在运行于`8888`端口的应用软件服务上试试`HTTP Request`:\n\n```\n$ curl -k -v 'http://127.0.0.1:8888/v1/chain/get_info' -X GET\n \nNote: Unnecessary use of -X or --request, GET is already inferred.\n* Trying 127.0.0.1...\n* TCP_NODELAY set\n* Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0)\n> GET /v1/chain/get_info HTTP/1.1\n> Host: 127.0.0.1:8888\n> User-Agent: curl/7.54.0\n> Accept: */*\n>\n< HTTP/1.1 200 OK\n< Connection: close\n< Content-Length: 529\n< Content-type: application/json\n< Server: WebSocket++/0.7.0\n<\n{\"server_version\":\"012dc012\",\"chain_id\":\"cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f\",\"head_block_num\":363,\"last_irreversible_block_num\":362,\"last_irreversible_block_id\":\"0000016ad0238cef2f6a8de2098115ba155cbbc535122912a7a62f66097adbd6\",\"head_block_id\":\"0000016b8cbb9154a759f2e61968fc1069fcf0ef9468886614d0538a97d96c61\",\"head_block_time\":\"2018-06-12T07:10:59\",\"head_block_producer\":\"eosio\",\"virtual_block_cpu_limit\":287075,\"virtual_block_net_limit\":1506023,\"block_cpu_limit\":199900,\"block_net_limit\":1048576}\n```\n\n或是利用`cleos`命令执行。\n\n```\n$ cleos get info\n{\n \"server_version\": \"012dc012\",\n \"chain_id\": \"cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f\",\n \"head_block_num\": 580,\n \"last_irreversible_block_num\": 579,\n \"last_irreversible_block_id\": \"000002436a1baaeb366b55995ddad7de0822f177d60a8c6e336e3f5fcb18ecc5\",\n \"head_block_id\": \"00000244e6923239c0649ddada0dd47a2df80df13fa825275df9ddac975e6162\",\n \"head_block_time\": \"2018-06-12T07:12:48\",\n \"head_block_producer\": \"eosio\",\n \"virtual_block_cpu_limit\": 356561,\n \"virtual_block_net_limit\": 1871085,\n \"block_cpu_limit\": 199900,\n \"block_net_limit\": 1048576\n}\n```\n\n### keosd\n\n同样用带有`option`的命令直接执行就行了\n\n```\n$ keosd — http-server-address=127.0.0.1:8900\n```\n\n - http-server-address : REST API,`nodeos`默认端口是8888。`cleos`默认端口考虑使用8900,URL不可用。\n\n只能通过替换`keosd`配置文件选项来运行。\n\n - 配置文件位置:`~/eosio-wallet/config.ini`。\n - 第一次`keosd`操作,文件自动生成。\n\n```\n$ vi ~/eosio-wallet/config.ini\n \n# http-server-address = 127.0.0.1:8888\nhttp-server-address = 127.0.0.1:8900\n```\n\n执行`keosd`:\n\n```\n$ keosd\n```\n\n在运行于`8900`端口的应用软件服务上试试`HTTP Request`:\n\n```\n$ curl -k -v ‘http://127.0.0.1:8900/v1/wallet/list_wallets' -X GET\n\nNote: Unnecessary use of -X or — request, GET is already inferred.\n* Trying 127.0.0.1…\n* TCP_NODELAY set\n* Connected to 127.0.0.1 (127.0.0.1) port 8900 (#0)\n> GET /v1/wallet/list_wallets HTTP/1.1\n> Host: 127.0.0.1:8900\n> User-Agent: curl/7.54.0\n> Accept: */*\n>\n< HTTP/1.1 200 OK\n< Connection: close\n< Content-Length: 2\n< Content-type: application/json\n< Server: WebSocket++/0.7.0\n<\n[]\n```\n\n或者使用`cleos`命令运行:\n\n```\n$ cleos wallet list\nWallets:\n[]\n```\n\n`nodeos`和`keosd`可以正常工作,现在可以使用EOSIO服务了。\n\n参考文件是EOSIO[官方wiki文档](https://github.com/eosio/eos/wiki),参考了[本地环境的安装](https://github.com/eosio/eos/wiki/Local-Environment)。\n\n另:《EOS智能合约与DApp开发入门》教程已经上线,爱学习等不及的可以抓紧体验一下:\n\n[EOS教程](http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=727steemit)\n\n这个教程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用React和EOS的各知识点完成一个便签DApp的开发。\n\n\n博客原文在:[这里](http://blog.hubwiz.com/2018/07/23/EOS-development-environment/)",
"json_metadata": "{\"tags\":[\"blockchain\",\"eos\",\"dapp\",\"smartcontracts\",\"environment\"],\"image\":[\"http://blog.hubwiz.com/2018/07/23/EOS-development-environment/eos-dev-env.png\"],\"links\":[\"https://developer.apple.com/xcode/\",\"https://brew.sh\",\"https://github.com/EOSIO/eos/issues/2174\",\"https://github.com/EOSIO/eos/issues/3197\",\"https://github.com/eosio/eos/wiki\",\"https://github.com/eosio/eos/wiki/Local-Environment\",\"http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded?affid=727steemit\",\"http://blog.hubwiz.com/2018/07/23/EOS-development-environment/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/07/17 16:53:30
2018/07/17 16:53:30
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 30219.899103 VESTS |
| Transaction Info | Block #24260061/Trx f43c3377789d28e4b8d5517bf5dd8e1675720863 |
View Raw JSON Data
{
"trx_id": "f43c3377789d28e4b8d5517bf5dd8e1675720863",
"block": 24260061,
"trx_in_block": 43,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-17T16:53:30",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "30219.899103 VESTS"
}
]
}2018/06/28 06:04:36
2018/06/28 06:04:36
| parent author | jimi2018 |
| parent permlink | java-android-web3j |
| author | rohanmore |
| permlink | re-jimi2018-java-android-web3j-20180628t060403408z |
| title | |
| body | I'm just follow u pls follow me back thanks. https://steemit.com/nature/@rohanmore/nature-part-of-life |
| json metadata | {"tags":["ethereum"],"links":["https://steemit.com/nature/@rohanmore/nature-part-of-life"],"app":"steemit/0.1"} |
| Transaction Info | Block #23709963/Trx acd3aa14c9d6c5f778fafcfaaf897dc2687172cf |
View Raw JSON Data
{
"trx_id": "acd3aa14c9d6c5f778fafcfaaf897dc2687172cf",
"block": 23709963,
"trx_in_block": 28,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-28T06:04:36",
"op": [
"comment",
{
"parent_author": "jimi2018",
"parent_permlink": "java-android-web3j",
"author": "rohanmore",
"permlink": "re-jimi2018-java-android-web3j-20180628t060403408z",
"title": "",
"body": "I'm just follow u pls follow me back thanks. \nhttps://steemit.com/nature/@rohanmore/nature-part-of-life",
"json_metadata": "{\"tags\":[\"ethereum\"],\"links\":[\"https://steemit.com/nature/@rohanmore/nature-part-of-life\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/06/28 06:03:45
2018/06/28 06:03:45
| parent author | cheetah |
| parent permlink | cheetah-re-jimi2018java-android-web3j |
| author | jimi2018 |
| permlink | re-cheetah-cheetah-re-jimi2018java-android-web3j-20180628t060702645z |
| title | |
| body | it's me |
| json metadata | {"tags":["ethereum"],"app":"steemit/0.1"} |
| Transaction Info | Block #23709946/Trx fda579792321c689be7e33e997b6031414a17678 |
View Raw JSON Data
{
"trx_id": "fda579792321c689be7e33e997b6031414a17678",
"block": 23709946,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-28T06:03:45",
"op": [
"comment",
{
"parent_author": "cheetah",
"parent_permlink": "cheetah-re-jimi2018java-android-web3j",
"author": "jimi2018",
"permlink": "re-cheetah-cheetah-re-jimi2018java-android-web3j-20180628t060702645z",
"title": "",
"body": "it's me",
"json_metadata": "{\"tags\":[\"ethereum\"],\"app\":\"steemit/0.1\"}"
}
]
}hackerzizonupvoted (1.00%) @jimi2018 / java-android-web3j2018/06/28 06:03:24
hackerzizonupvoted (1.00%) @jimi2018 / java-android-web3j
2018/06/28 06:03:24
| voter | hackerzizon |
| author | jimi2018 |
| permlink | java-android-web3j |
| weight | 100 (1.00%) |
| Transaction Info | Block #23709939/Trx e05cc24fd0d0568e80eb3bf47509bb77b2218bc2 |
View Raw JSON Data
{
"trx_id": "e05cc24fd0d0568e80eb3bf47509bb77b2218bc2",
"block": 23709939,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-28T06:03:24",
"op": [
"vote",
{
"voter": "hackerzizon",
"author": "jimi2018",
"permlink": "java-android-web3j",
"weight": 100
}
]
}jimi2018upvoted (100.00%) @jimi2018 / java-android-web3j2018/06/28 06:02:51
jimi2018upvoted (100.00%) @jimi2018 / java-android-web3j
2018/06/28 06:02:51
| voter | jimi2018 |
| author | jimi2018 |
| permlink | java-android-web3j |
| weight | 10000 (100.00%) |
| Transaction Info | Block #23709928/Trx 9dd94d7a536b5eaba0b62ac537e0de5d9395f8c9 |
View Raw JSON Data
{
"trx_id": "9dd94d7a536b5eaba0b62ac537e0de5d9395f8c9",
"block": 23709928,
"trx_in_block": 44,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-28T06:02:51",
"op": [
"vote",
{
"voter": "jimi2018",
"author": "jimi2018",
"permlink": "java-android-web3j",
"weight": 10000
}
]
}cheetahreplied to @jimi2018 / cheetah-re-jimi2018java-android-web3j2018/06/28 06:02:36
cheetahreplied to @jimi2018 / cheetah-re-jimi2018java-android-web3j
2018/06/28 06:02:36
| parent author | jimi2018 |
| parent permlink | java-android-web3j |
| author | cheetah |
| permlink | cheetah-re-jimi2018java-android-web3j |
| title | |
| body | Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in: https://my.oschina.net/u/2275217/blog/1836777 |
| json metadata | |
| Transaction Info | Block #23709923/Trx df9a7e3cf920d7fd880aef0aca613f452d66389b |
View Raw JSON Data
{
"trx_id": "df9a7e3cf920d7fd880aef0aca613f452d66389b",
"block": 23709923,
"trx_in_block": 31,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-28T06:02:36",
"op": [
"comment",
{
"parent_author": "jimi2018",
"parent_permlink": "java-android-web3j",
"author": "cheetah",
"permlink": "cheetah-re-jimi2018java-android-web3j",
"title": "",
"body": "Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:\nhttps://my.oschina.net/u/2275217/blog/1836777",
"json_metadata": ""
}
]
}cheetahupvoted (0.08%) @jimi2018 / java-android-web3j2018/06/28 06:02:21
cheetahupvoted (0.08%) @jimi2018 / java-android-web3j
2018/06/28 06:02:21
| voter | cheetah |
| author | jimi2018 |
| permlink | java-android-web3j |
| weight | 8 (0.08%) |
| Transaction Info | Block #23709918/Trx 6c647f22cf89ca2ae8bd188fc782f29c5166b9d3 |
View Raw JSON Data
{
"trx_id": "6c647f22cf89ca2ae8bd188fc782f29c5166b9d3",
"block": 23709918,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-28T06:02:21",
"op": [
"vote",
{
"voter": "cheetah",
"author": "jimi2018",
"permlink": "java-android-web3j",
"weight": 8
}
]
}jimi2018published a new post: java-android-web3j2018/06/28 06:02:12
jimi2018published a new post: java-android-web3j
2018/06/28 06:02:12
| parent author | |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | java-android-web3j |
| title | java和android开发者如何使用web3j开发以太坊智能合约并进行交易的教程 |
| body | 从广义上讲,有web3j支持三种类型的以太坊交易: - 1.以太币从一方交易到另一方 - 2.创建一个智能合约 - 3.与智能合约交易 为了进行这些交易,必须有以太币(以太坊区块链的代币)存在于交易发生的以太坊账户中。这是为了支付[gas](http://blog.hubwiz.com/2018/04/12/how-to-estimate-gas/)成本,这是为支付参与交易的以太坊客户端的交易执行成本,支付了这个成本就能将结果提交到以太坊区块链上。获得以太币的说明下文会说到。 此外,我们还可以查询智能合约的状态。  ### 如何获得以太币Ether 要想获得以太币Ether你有两种途径可以选择: - 1.自己开采挖矿 - 2.从别人那里获取以太币 在私有链中自己挖矿,或者公共测试链(`testnet`)是非常简单直接的。但是,在主要的公有链(`mainnet`)中,它需要很多很明显的专用GPU时间,除非你已经拥有多个专用GPU的矿机,否则基本上不太可行。如果你希望使用私有链,则在这个[官方文档](https://ethereum-homestead.readthedocs.io/en/latest/network/test-networks.html#id3)中有一些指导。 要购买以太币Ether,你需要通过交易所。由于不同的地区有不同的交易所,你还需要研究自己去哪儿合适。[官方文档](https://ethereum-homestead.readthedocs.io/en/latest/ether.html#list-of-centralised-exchange-marketplaces)中包含多个交易所,是一个很好的参考。 ### 以太坊测试链(testnets) 针对Ethereum以太坊有许多专用测试网络或者叫测试链,他们由各种客户端支持。 - 1.Rinkeby:只支持geth客户端。 - 2.Kovan:只支持Parity客户端。 - 3.Ropsten:支持geth和Parity客户端。 对于开发,建议你使用`Rinkeby`或`KoVan`测试链。这是因为他们使用的工作量证明`POA`共识机制,确保交易和块能够一致并及时的创建。`Ropsten`测试链,虽然最接近公有链(`Mainnet`),但是因为它使用的工作量证明是`POW`共识机制,过去已受到攻击,对以太坊开发人员来说往往有更多的问题。 你可以通过`Rinkeby`测试链的`Rinkeby Crypto Fauce`请求以太坊币,具体怎么做可以看这里[https://www.rinkeby.io/](https://www.rinkeby.io/)。 有关如何请求`Kovan`测试链的细节可以在[这里](https://github.com/kovan-testnet/faucet)找到。 如果你需要在`Ropsten`上的得到一些以太币,将你的钱包地址的消息发布到[web3j gitter channel](https://gitter.im/web3j/web3j),然后会发送一些给你。 ### 在testnet测试链或者私有链上挖掘 在ethereum以太坊测试链`testnet`中,挖掘难度低于公有链`mainnet`。这意味着你可以用普通的CPU,比如你的笔记本电脑来挖掘新的以太币。你需要做的是运行一个以太坊客户端,例如`geth`或`Parity`,开始做一些储备。进一步的资料可在他们的官方网站上获得。 - geth :[https://github.com/ethereum/go-ethereum/wiki/Mining](https://github.com/ethereum/go-ethereum/wiki/Mining) - Parity :[https://github.com/paritytech/parity/wiki/Mining](https://github.com/paritytech/parity/wiki/Mining) 一旦你开采了一些以太币,你就可以开始使用以太坊区块链了。 然而,如上所述,使用`Kovan`或者`Rinkeby`测试网络更简单些。 ### gas 当在Ethereum以太坊发生交易时,必须为执行该交易的客户端支付交易成本,将该交易的输出提交到以太坊区块链Ethereum blockchain。 此成本是通过gas来测量的,其中gas是用于在以太坊虚拟机中执行交易指令的数量。请参阅[官方文档](http://ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-transactions.html?highlight=gas#what-is-gas)以获取更多信息。 当你使用以太坊客户端时,这意味着,有两个参数用来指示你希望花费多少以太来完成传输: - gas price :气体价格,这是每单位gas中以太的消耗量。Web3j使用的默认价格为22000000000 wei(22×10-8 Ether)。这是在[交易管理](https://docs.web3j.io/transactions.html#transfer-of-ether)中定义的。 - gas limit:气体最大量,这是你愿意在交易执行上花费的gas的最大总量。单个交易在一个以太坊区块中有多大的上限,通常将该值限制为小于6700000。当前的gas限制在这里查[https://ethstats.net/](https://ethstats.net/)。 这两个参数共同决定了你愿意花费在交易成本上的最大量的以太币Ether。也就是说,你花费的gas不会超过`gas price * gas limit`。gas价格也会影响交易发生的速度,这取决于其他交易是否能为矿工提供更有利的gas价格。 你可能需要调整这些参数以确保交易能及时进行。 ### 交易机制 当你用一些以太币Ether创建了一个有效的帐户时,你可以使用两种机制来与以太坊进行交易。 - 通过以太坊ethereum客户端进行认证签名交易 - 离线交易签名认证 这两种机制都是Web3j所支持的。 ### 通过以太坊ethereum客户端进行认证签名交易 为了通过以太坊客户端进行交易,首先需要确保你正在使用的客户端知道你的钱包地址。最好是运行自己的以太坊客户端,比如`geth`/`Parity`,以便可以更方便的做到这一点。一旦你有一个客户端运行,你可以创建一个以太坊钱包,通过: - [geth Wiki](https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts)包含了geth支持的良好运行的不同机制,例如导入私有密钥文件,并通过控制台创建新的以太坊帐户。 - 或者,你可以通过客户端使用JSON-RPC管理命令,例如用`personal_newAccount`为`geth`/`Parity`创建新以太坊账户。 通过创建你的钱包文件,你可以通过web3j打开帐户,首先创建支持`geth`/`Parity`管理命令的web3j实例: ``` Admin web3j = Admin.build(new HttpService()); ``` 然后,你可以解锁帐户,并如果是成功的,就可以发送一个交易: ``` PersonalUnlockAccount personalUnlockAccount = web3j.personalUnlockAccount("0x000...", "a password").send(); if (personalUnlockAccount.accountUnlocked()) { // send a transaction } ``` 以这种方式发送的交易应该通过[EthSendTransaction](https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/protocol/core/methods/response/EthSendTransaction.java)创建,使用[Transaction](https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/protocol/core/methods/request/Transaction.java)类型: ``` Transaction transaction = Transaction.createContractTransaction( <from address>, <nonce>, BigInteger.valueOf(<gas price>), // we use default gas limit "0x...<smart contract code to execute>" ); org.web3j.protocol.core.methods.response.EthSendTransaction transactionResponse = parity.ethSendTransaction(ethSendTransaction) .send(); String transactionHash = transactionResponse.getTransactionHash(); // poll for transaction response via org.web3j.protocol.Web3j.ethGetTransactionReceipt(<txHash>) ``` 其中`nonce`值获得方式,下文会提到。 有关此交易工作流的详细信息,请参阅[ DeployContractIT](https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/DeployContractIT.java)和[Scenario](https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/Scenario.java)。 web3j支持的各种管理命令的进一步细节在[Management APIs](https://docs.web3j.io/management_apis.html)中。 ### 离线交易签名认证Offline transaction signing 如果你不想管理自己的以太坊客户端,或者不想向以太坊客户端提供诸如密码之类的钱包详细信息,那么就通过离线交易认证签名。 离线交易签名认证允许你在web3j中使用你的以太坊钱包签署交易,允许你完全控制你的私有凭据。然后,离线创建的交易可以被发送到网络上的任何以太坊客户端,只要它是一个有效的交易,它会将交易传播到其他节点。 如果需要,还可以执行进程外交易签名认证。这可以通过重写[ECKeyPair](https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/ECKeyPair.java#L41)的`sign`方法来实现。 ### 创建和使用钱包文件Ethereum wallet file 为了离线脱机交易,你需要有你的钱包文件或与私密钱包/账户相关的公共和私人密钥。 web3j能够为你生成一个新的安全的以太坊钱包文件Ethereum wallet file,或者与也可以通过私钥来和现有的钱包文件一起工作。 创建新的钱包文件: ``` String fileName = WalletUtils.generateNewWalletFile( "your password", new File("/path/to/destination")); ``` 加载凭据从钱包文件: ``` Credentials credentials = WalletUtils.loadCredentials( "your password", "/path/to/walletfile"); ``` 然后这些凭据会被用来签署交易,请参阅Web3安全存储定义钱包文件规范[Web3 Secret Storage Definition](https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition) ### 签署以太坊交易 要使脱机签名交易得到签署,需要设定一个[RawTransaction](https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/RawTransaction.java)类型。`RawTransaction`类似于前面提到的`Transaction`类型,但是它不需要通过具体的账号地址来请求,因为可以从签名中推断出来。 为了创建和签署原生交易,交易的顺序如下: - 1.确定交易发起者帐户的下一个可用随机数`nonce` - 2.创建`RawTransaction`对象 - 3.使用递归长度前缀编码(RLP即[Recursive Length Prefix](https://docs.web3j.io/rlp.html))对`RawTransaction`对象进行编码 - 4.签署`RawTransaction`对象 - 5.将`RawTransaction`对象发送到节点进行处理 `nonce`是一个不断增长的数值,用来唯一地标识交易。一个`nonce`只能使用一次,直到交易被挖掘完成,可以以相同的随机数发送交易的多个版本,但是一旦其中一个被挖掘完成,其他后续提交的都将被拒绝。 一旦获得下一个可用的`nonce`,该值就可以用来创建`transaction`对象: ``` RawTransaction rawTransaction = RawTransaction.createEtherTransaction( nonce, <gas price>, <gas limit>, <toAddress>, <value>); ``` 然后可以对交易进行签名和编码: ``` byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, <credentials>); String hexValue = Numeric.toHexString(signedMessage); ``` 其中凭据是根据[创建和使用钱包文件](https://docs.web3j.io/transactions.html#wallet-files)加载的。 然后使用[eth_SendRawTransaction](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendrawtransaction)发送交易: ``` EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).sendAsync().get(); String transactionHash = ethSendTransaction.getTransactionHash(); // poll for transaction response via org.web3j.protocol.Web3j.ethGetTransactionReceipt(<txHash>) ``` 有关创建和发送原始事务的完整示例,请参阅[ CreateRawTransactionIT](https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/CreateRawTransactionIT.java)。 ### 交易随机数nonce `nonce`是一个不断增长的数值,用来唯一地标识交易。一个`nonce`只能使用一次,直到交易被挖掘完成,可以以相同的随机数发送交易的多个版本,但是一旦其中一个被挖掘完成,其他后续提交的都将被拒绝。 可以通过`eth_getTransactionCount`方法获得下一个可用的`nonce`: ``` EthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount( address, DefaultBlockParameterName.LATEST).sendAsync().get(); BigInteger nonce = ethGetTransactionCount.getTransactionCount(); ``` 然后可以使用`nonce`创建你的交易对象: ``` RawTransaction rawTransaction = RawTransaction.createEtherTransaction( nonce, <gas price>, <gas limit>, <toAddress>, <value>); ``` ### 交易类型 web3j中的不同类型的交易都使用`Transaction`和`RawTransaction`对象。关键的区别是交易对象必须始终有一个地址,以便处理`eth_sendTransaction`请求的以太坊客户端知道要使用哪个钱包来代表消息发送者并发送该交易。如上所述,对于离线签名认证签署的原始交易而言,这不是必须的。 接下来的部分概述了不同交易类型所需的关键交易属性。下列属性对所有人都是不变: - Gas price 天然气气体价格 - Gas limit 天然气气体限制 - Nonce 随机数 - from 发送地址 `Transaction`和`RawTransaction`对象在所有后续示例中都可互换使用。 ### 以太币从一方交易到另一方 在双方之间发送以太币Ether需要交易对象的最少量的信息: - to :目的地钱包地址 - value:价值,希望发送到目的地的以太币数量 ``` BigInteger value = Convert.toWei("1.0", Convert.Unit.ETHER).toBigInteger(); RawTransaction rawTransaction = RawTransaction.createEtherTransaction( <nonce>, <gas price>, <gas limit>, <toAddress>, value); // send... ``` 但是,建议你使用[TransferClass](https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/tx/Transfer.java)来发送以太币Ether,它负责对`nonce`管理和通过不断的轮询为你提供响应: ``` Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/ Credentials credentials = WalletUtils.loadCredentials("password", "/path/to/walletfile"); TransactionReceipt transactionReceipt = Transfer.sendFunds( web3, credentials, "0x<address>|<ensName>", BigDecimal.valueOf(1.0), Convert.Unit.ETHER).send(); ``` ### 使用智能合约打包器smart contract wrappers 当使用下面列出的智能合约打包器时,将不得不手动执行从Solidity到本机Java类型的所有转换。使用[Solidity smart contract wrappers](https://docs.web3j.io/smart_contracts.html#smart-contract-wrappers)是非常有效的,它负责所有的代码生成和转换。 ### 创建一个智能合约 要部署新的智能合约,需要提供以下属性: - value :在智能合约中希望存放的以太坊Ether量(如果没有提供默认为零) - data :十六进制格式化、编译的智能合约创建代码 ``` // using a raw transaction RawTransaction rawTransaction = RawTransaction.createContractTransaction( <nonce>, <gasPrice>, <gasLimit>, <value>, "0x <compiled smart contract code>"); // send... // get contract address EthGetTransactionReceipt transactionReceipt = web3j.ethGetTransactionReceipt(transactionHash).send(); if (transactionReceipt.getTransactionReceipt.isPresent()) { String contractAddress = transactionReceipt.get().getContractAddress(); } else { // try again } ``` 如果智能合约包含构造函数,则必须对关联的构造函数字段值进行编码,并将其附加到编译的智能合约代码中`compiled smart contract code`: ``` String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.asList(new Type(value), ...)); // using a regular transaction Transaction transaction = Transaction.createContractTransaction( <fromAddress>, <nonce>, <gasPrice>, <gasLimit>, <value>, "0x <compiled smart contract code>" + encodedConstructor); // send... ``` ### 与智能合约交易 要与现有的智能合约进行交易,需要提供以下属性: - to:智能合同地址 - value:在智能合约中你希望存放的以太币Ether量(如果智能合约接受以太币Ether的话) - data: 已编码的函数选择器和自变量参数 web3j负责函数编码,有关实现的进一步细节,请参阅应用程序二进制接口部分[Application Binary Interface](https://docs.web3j.io/abi.html)。 ``` Function function = new Function<>( "functionName", // function we're calling Arrays.asList(new Type(value), ...), // Parameters to pass as Solidity Types Arrays.asList(new TypeReference<Type>() {}, ...)); String encodedFunction = FunctionEncoder.encode(function) Transaction transaction = Transaction.createFunctionCallTransaction( <from>, <gasPrice>, <gasLimit>, contractAddress, <funds>, encodedFunction); org.web3j.protocol.core.methods.response.EthSendTransaction transactionResponse = web3j.ethSendTransaction(transaction).sendAsync().get(); String transactionHash = transactionResponse.getTransactionHash(); // wait for response using EthGetTransactionReceipt... ``` 无论消息签名的返回类型如何,都不可能从事务性函数调用返回值。但是,使用过滤器捕获函数返回的值是可能的。详情请参阅过滤器和事件部分。 ### 查询智能合约状态 这种功能是由[eth_call](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call)通过`JSON-RPC`调用来实现的。 eth_call允许你调用智能合约上的方法来查询某个值。此函数没有关联交易成本,这是因为它不改变任何智能合约方法的状态,它只返回它们的值: ``` Function function = new Function<>( "functionName", Arrays.asList(new Type(value)), // Solidity Types in smart contract functions Arrays.asList(new TypeReference<Type>() {}, ...)); String encodedFunction = FunctionEncoder.encode(function) org.web3j.protocol.core.methods.response.EthCall response = web3j.ethCall( Transaction.createEthCallTransaction(<from>, contractAddress, encodedFunction), DefaultBlockParameterName.LATEST) .sendAsync().get(); List<Type> someTypes = FunctionReturnDecoder.decode( response.getValue(), function.getOutputParameters()); ``` **注意**:如果一个无效的函数调用被执行,或者得到一个空null返回结果时,返回值将是一个[Collections.emptyList](https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#emptyList--)实例。 > - [web3j教程](http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2?affid=blog625),主要是针对java和android程序员进行区块链以太坊开发的web3j开发详解。 > - [以太坊教程](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=blog625),主要介绍智能合约与dapp应用开发,适合入门。 > - [以太坊开发](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=blog625),主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。 汇智网原创翻译,转载请标明出处。原文访问[这里](https://docs.web3j.io/transactions.html) |
| json metadata | {"tags":["ethereum","java","android","web3j","blockchain"],"image":["http://blog.hubwiz.com/2018/06/25/web3j-transactions/web3j_transaction.png"],"links":["http://blog.hubwiz.com/2018/04/12/how-to-estimate-gas/","https://ethereum-homestead.readthedocs.io/en/latest/network/test-networks.html#id3","https://ethereum-homestead.readthedocs.io/en/latest/ether.html#list-of-centralised-exchange-marketplaces","https://www.rinkeby.io/","https://github.com/kovan-testnet/faucet","https://gitter.im/web3j/web3j","https://github.com/ethereum/go-ethereum/wiki/Mining","https://github.com/paritytech/parity/wiki/Mining","http://ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-transactions.html?highlight=gas#what-is-gas","https://docs.web3j.io/transactions.html#transfer-of-ether","https://ethstats.net/","https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts","https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/protocol/core/methods/response/EthSendTransaction.java","https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/protocol/core/methods/request/Transaction.java","https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/DeployContractIT.java","https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/Scenario.java","https://docs.web3j.io/management_apis.html","https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/ECKeyPair.java#L41","https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition","https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/RawTransaction.java","https://docs.web3j.io/rlp.html","https://docs.web3j.io/transactions.html#wallet-files","https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendrawtransaction","https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/CreateRawTransactionIT.java","https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/tx/Transfer.java","https://docs.web3j.io/smart_contracts.html#smart-contract-wrappers","https://docs.web3j.io/abi.html","https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call","https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#emptyList--","http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2?affid=blog625","http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=blog625","http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=blog625","https://docs.web3j.io/transactions.html"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23709915/Trx 4ec74886fb298776bb4c17cd9efaded821188825 |
View Raw JSON Data
{
"trx_id": "4ec74886fb298776bb4c17cd9efaded821188825",
"block": 23709915,
"trx_in_block": 29,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-28T06:02:12",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "java-android-web3j",
"title": "java和android开发者如何使用web3j开发以太坊智能合约并进行交易的教程",
"body": "从广义上讲,有web3j支持三种类型的以太坊交易:\n\n- 1.以太币从一方交易到另一方\n- 2.创建一个智能合约\n- 3.与智能合约交易\n\n为了进行这些交易,必须有以太币(以太坊区块链的代币)存在于交易发生的以太坊账户中。这是为了支付[gas](http://blog.hubwiz.com/2018/04/12/how-to-estimate-gas/)成本,这是为支付参与交易的以太坊客户端的交易执行成本,支付了这个成本就能将结果提交到以太坊区块链上。获得以太币的说明下文会说到。\n\n此外,我们还可以查询智能合约的状态。\n\n\n\n\n### 如何获得以太币Ether\n\n要想获得以太币Ether你有两种途径可以选择:\n- 1.自己开采挖矿\n- 2.从别人那里获取以太币\n\n在私有链中自己挖矿,或者公共测试链(`testnet`)是非常简单直接的。但是,在主要的公有链(`mainnet`)中,它需要很多很明显的专用GPU时间,除非你已经拥有多个专用GPU的矿机,否则基本上不太可行。如果你希望使用私有链,则在这个[官方文档](https://ethereum-homestead.readthedocs.io/en/latest/network/test-networks.html#id3)中有一些指导。\n\n要购买以太币Ether,你需要通过交易所。由于不同的地区有不同的交易所,你还需要研究自己去哪儿合适。[官方文档](https://ethereum-homestead.readthedocs.io/en/latest/ether.html#list-of-centralised-exchange-marketplaces)中包含多个交易所,是一个很好的参考。\n\n### 以太坊测试链(testnets)\n\n针对Ethereum以太坊有许多专用测试网络或者叫测试链,他们由各种客户端支持。\n\n- 1.Rinkeby:只支持geth客户端。\n- 2.Kovan:只支持Parity客户端。\n- 3.Ropsten:支持geth和Parity客户端。\n\n对于开发,建议你使用`Rinkeby`或`KoVan`测试链。这是因为他们使用的工作量证明`POA`共识机制,确保交易和块能够一致并及时的创建。`Ropsten`测试链,虽然最接近公有链(`Mainnet`),但是因为它使用的工作量证明是`POW`共识机制,过去已受到攻击,对以太坊开发人员来说往往有更多的问题。\n\n你可以通过`Rinkeby`测试链的`Rinkeby Crypto Fauce`请求以太坊币,具体怎么做可以看这里[https://www.rinkeby.io/](https://www.rinkeby.io/)。\n\n有关如何请求`Kovan`测试链的细节可以在[这里](https://github.com/kovan-testnet/faucet)找到。\n\n如果你需要在`Ropsten`上的得到一些以太币,将你的钱包地址的消息发布到[web3j gitter channel](https://gitter.im/web3j/web3j),然后会发送一些给你。\n\n### 在testnet测试链或者私有链上挖掘\n\n在ethereum以太坊测试链`testnet`中,挖掘难度低于公有链`mainnet`。这意味着你可以用普通的CPU,比如你的笔记本电脑来挖掘新的以太币。你需要做的是运行一个以太坊客户端,例如`geth`或`Parity`,开始做一些储备。进一步的资料可在他们的官方网站上获得。\n\n- geth :[https://github.com/ethereum/go-ethereum/wiki/Mining](https://github.com/ethereum/go-ethereum/wiki/Mining)\n- Parity :[https://github.com/paritytech/parity/wiki/Mining](https://github.com/paritytech/parity/wiki/Mining)\n\n一旦你开采了一些以太币,你就可以开始使用以太坊区块链了。\n\n然而,如上所述,使用`Kovan`或者`Rinkeby`测试网络更简单些。\n\n### gas\n\n当在Ethereum以太坊发生交易时,必须为执行该交易的客户端支付交易成本,将该交易的输出提交到以太坊区块链Ethereum blockchain。\n\n此成本是通过gas来测量的,其中gas是用于在以太坊虚拟机中执行交易指令的数量。请参阅[官方文档](http://ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-transactions.html?highlight=gas#what-is-gas)以获取更多信息。\n\n当你使用以太坊客户端时,这意味着,有两个参数用来指示你希望花费多少以太来完成传输:\n\n- gas price :气体价格,这是每单位gas中以太的消耗量。Web3j使用的默认价格为22000000000 wei(22×10-8 Ether)。这是在[交易管理](https://docs.web3j.io/transactions.html#transfer-of-ether)中定义的。\n- gas limit:气体最大量,这是你愿意在交易执行上花费的gas的最大总量。单个交易在一个以太坊区块中有多大的上限,通常将该值限制为小于6700000。当前的gas限制在这里查[https://ethstats.net/](https://ethstats.net/)。\n\n这两个参数共同决定了你愿意花费在交易成本上的最大量的以太币Ether。也就是说,你花费的gas不会超过`gas price * gas limit`。gas价格也会影响交易发生的速度,这取决于其他交易是否能为矿工提供更有利的gas价格。\n\n你可能需要调整这些参数以确保交易能及时进行。\n\n### 交易机制\n\n当你用一些以太币Ether创建了一个有效的帐户时,你可以使用两种机制来与以太坊进行交易。\n\n- 通过以太坊ethereum客户端进行认证签名交易\n- 离线交易签名认证\n\n这两种机制都是Web3j所支持的。\n\n### 通过以太坊ethereum客户端进行认证签名交易\n\n为了通过以太坊客户端进行交易,首先需要确保你正在使用的客户端知道你的钱包地址。最好是运行自己的以太坊客户端,比如`geth`/`Parity`,以便可以更方便的做到这一点。一旦你有一个客户端运行,你可以创建一个以太坊钱包,通过:\n\n- [geth Wiki](https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts)包含了geth支持的良好运行的不同机制,例如导入私有密钥文件,并通过控制台创建新的以太坊帐户。\n- 或者,你可以通过客户端使用JSON-RPC管理命令,例如用`personal_newAccount`为`geth`/`Parity`创建新以太坊账户。\n\n通过创建你的钱包文件,你可以通过web3j打开帐户,首先创建支持`geth`/`Parity`管理命令的web3j实例:\n\n```\nAdmin web3j = Admin.build(new HttpService());\n```\n\n然后,你可以解锁帐户,并如果是成功的,就可以发送一个交易:\n\n```\nPersonalUnlockAccount personalUnlockAccount = web3j.personalUnlockAccount(\"0x000...\", \"a password\").send();\nif (personalUnlockAccount.accountUnlocked()) {\n // send a transaction\n}\n```\n\n以这种方式发送的交易应该通过[EthSendTransaction](https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/protocol/core/methods/response/EthSendTransaction.java)创建,使用[Transaction](https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/protocol/core/methods/request/Transaction.java)类型:\n\n```\nTransaction transaction = Transaction.createContractTransaction(\n <from address>,\n <nonce>,\n BigInteger.valueOf(<gas price>), // we use default gas limit\n \"0x...<smart contract code to execute>\"\n );\n\n org.web3j.protocol.core.methods.response.EthSendTransaction\n transactionResponse = parity.ethSendTransaction(ethSendTransaction)\n .send();\n\n String transactionHash = transactionResponse.getTransactionHash();\n\n // poll for transaction response via org.web3j.protocol.Web3j.ethGetTransactionReceipt(<txHash>)\n```\n\n其中`nonce`值获得方式,下文会提到。\n有关此交易工作流的详细信息,请参阅[ DeployContractIT](https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/DeployContractIT.java)和[Scenario](https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/Scenario.java)。\n\nweb3j支持的各种管理命令的进一步细节在[Management APIs](https://docs.web3j.io/management_apis.html)中。\n\n### 离线交易签名认证Offline transaction signing\n\n如果你不想管理自己的以太坊客户端,或者不想向以太坊客户端提供诸如密码之类的钱包详细信息,那么就通过离线交易认证签名。\n\n离线交易签名认证允许你在web3j中使用你的以太坊钱包签署交易,允许你完全控制你的私有凭据。然后,离线创建的交易可以被发送到网络上的任何以太坊客户端,只要它是一个有效的交易,它会将交易传播到其他节点。\n\n如果需要,还可以执行进程外交易签名认证。这可以通过重写[ECKeyPair](https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/ECKeyPair.java#L41)的`sign`方法来实现。\n\n### 创建和使用钱包文件Ethereum wallet file\n\n为了离线脱机交易,你需要有你的钱包文件或与私密钱包/账户相关的公共和私人密钥。\n\nweb3j能够为你生成一个新的安全的以太坊钱包文件Ethereum wallet file,或者与也可以通过私钥来和现有的钱包文件一起工作。\n\n创建新的钱包文件:\n```\nString fileName = WalletUtils.generateNewWalletFile(\n \"your password\",\n new File(\"/path/to/destination\"));\n```\n\n加载凭据从钱包文件:\n```\nCredentials credentials = WalletUtils.loadCredentials(\n \"your password\",\n \"/path/to/walletfile\");\n```\n然后这些凭据会被用来签署交易,请参阅Web3安全存储定义钱包文件规范[Web3 Secret Storage Definition](https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition)\n\n### 签署以太坊交易\n\n要使脱机签名交易得到签署,需要设定一个[RawTransaction](https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/RawTransaction.java)类型。`RawTransaction`类似于前面提到的`Transaction`类型,但是它不需要通过具体的账号地址来请求,因为可以从签名中推断出来。\n\n为了创建和签署原生交易,交易的顺序如下:\n\n- 1.确定交易发起者帐户的下一个可用随机数`nonce`\n- 2.创建`RawTransaction`对象\n- 3.使用递归长度前缀编码(RLP即[Recursive Length Prefix](https://docs.web3j.io/rlp.html))对`RawTransaction`对象进行编码\n- 4.签署`RawTransaction`对象\n- 5.将`RawTransaction`对象发送到节点进行处理\n\n`nonce`是一个不断增长的数值,用来唯一地标识交易。一个`nonce`只能使用一次,直到交易被挖掘完成,可以以相同的随机数发送交易的多个版本,但是一旦其中一个被挖掘完成,其他后续提交的都将被拒绝。\n\n一旦获得下一个可用的`nonce`,该值就可以用来创建`transaction`对象:\n\n```\nRawTransaction rawTransaction = RawTransaction.createEtherTransaction(\n nonce, <gas price>, <gas limit>, <toAddress>, <value>);\n```\n\n然后可以对交易进行签名和编码:\n\n```\nbyte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, <credentials>);\nString hexValue = Numeric.toHexString(signedMessage);\n```\n\n其中凭据是根据[创建和使用钱包文件](https://docs.web3j.io/transactions.html#wallet-files)加载的。\n\n然后使用[eth_SendRawTransaction](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendrawtransaction)发送交易:\n\n```\nEthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).sendAsync().get();\nString transactionHash = ethSendTransaction.getTransactionHash();\n// poll for transaction response via org.web3j.protocol.Web3j.ethGetTransactionReceipt(<txHash>)\n```\n\n有关创建和发送原始事务的完整示例,请参阅[ CreateRawTransactionIT](https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/CreateRawTransactionIT.java)。\n\n### 交易随机数nonce\n\n`nonce`是一个不断增长的数值,用来唯一地标识交易。一个`nonce`只能使用一次,直到交易被挖掘完成,可以以相同的随机数发送交易的多个版本,但是一旦其中一个被挖掘完成,其他后续提交的都将被拒绝。\n\n可以通过`eth_getTransactionCount`方法获得下一个可用的`nonce`:\n\n```\nEthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount(\n address, DefaultBlockParameterName.LATEST).sendAsync().get();\n\n BigInteger nonce = ethGetTransactionCount.getTransactionCount();\n```\n\n然后可以使用`nonce`创建你的交易对象:\n\n```\nRawTransaction rawTransaction = RawTransaction.createEtherTransaction(\n nonce, <gas price>, <gas limit>, <toAddress>, <value>);\n```\n\n### 交易类型\n\nweb3j中的不同类型的交易都使用`Transaction`和`RawTransaction`对象。关键的区别是交易对象必须始终有一个地址,以便处理`eth_sendTransaction`请求的以太坊客户端知道要使用哪个钱包来代表消息发送者并发送该交易。如上所述,对于离线签名认证签署的原始交易而言,这不是必须的。\n\n接下来的部分概述了不同交易类型所需的关键交易属性。下列属性对所有人都是不变:\n- Gas price 天然气气体价格\n- Gas limit 天然气气体限制\n- Nonce 随机数\n- from 发送地址\n\n`Transaction`和`RawTransaction`对象在所有后续示例中都可互换使用。\n\n### 以太币从一方交易到另一方\n\n在双方之间发送以太币Ether需要交易对象的最少量的信息:\n\n- to :目的地钱包地址\n- value:价值,希望发送到目的地的以太币数量\n\n```\nBigInteger value = Convert.toWei(\"1.0\", Convert.Unit.ETHER).toBigInteger();\nRawTransaction rawTransaction = RawTransaction.createEtherTransaction(\n <nonce>, <gas price>, <gas limit>, <toAddress>, value);\n// send...\n```\n\n但是,建议你使用[TransferClass](https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/tx/Transfer.java)来发送以太币Ether,它负责对`nonce`管理和通过不断的轮询为你提供响应:\n\n```\nWeb3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/\nCredentials credentials = WalletUtils.loadCredentials(\"password\", \"/path/to/walletfile\");\nTransactionReceipt transactionReceipt = Transfer.sendFunds(\n web3, credentials, \"0x<address>|<ensName>\",\n BigDecimal.valueOf(1.0), Convert.Unit.ETHER).send();\n```\n\n### 使用智能合约打包器smart contract wrappers\n\n当使用下面列出的智能合约打包器时,将不得不手动执行从Solidity到本机Java类型的所有转换。使用[Solidity smart contract wrappers](https://docs.web3j.io/smart_contracts.html#smart-contract-wrappers)是非常有效的,它负责所有的代码生成和转换。\n\n### 创建一个智能合约\n\n要部署新的智能合约,需要提供以下属性:\n\n- value :在智能合约中希望存放的以太坊Ether量(如果没有提供默认为零)\n- data :十六进制格式化、编译的智能合约创建代码\n\n```\n// using a raw transaction\nRawTransaction rawTransaction = RawTransaction.createContractTransaction(\n <nonce>,\n <gasPrice>,\n <gasLimit>,\n <value>,\n \"0x <compiled smart contract code>\");\n// send...\n\n// get contract address\nEthGetTransactionReceipt transactionReceipt =\n web3j.ethGetTransactionReceipt(transactionHash).send();\n\nif (transactionReceipt.getTransactionReceipt.isPresent()) {\n String contractAddress = transactionReceipt.get().getContractAddress();\n} else {\n // try again\n}\n```\n\n如果智能合约包含构造函数,则必须对关联的构造函数字段值进行编码,并将其附加到编译的智能合约代码中`compiled smart contract code`:\n\n```\nString encodedConstructor =\n FunctionEncoder.encodeConstructor(Arrays.asList(new Type(value), ...));\n\n// using a regular transaction\nTransaction transaction = Transaction.createContractTransaction(\n <fromAddress>,\n <nonce>,\n <gasPrice>,\n <gasLimit>,\n <value>,\n \"0x <compiled smart contract code>\" + encodedConstructor);\n\n// send...\n```\n\n### 与智能合约交易\n\n要与现有的智能合约进行交易,需要提供以下属性:\n\n- to:智能合同地址\n- value:在智能合约中你希望存放的以太币Ether量(如果智能合约接受以太币Ether的话)\n- data: 已编码的函数选择器和自变量参数\n\nweb3j负责函数编码,有关实现的进一步细节,请参阅应用程序二进制接口部分[Application Binary Interface](https://docs.web3j.io/abi.html)。\n\n```\nFunction function = new Function<>(\n \"functionName\", // function we're calling\n Arrays.asList(new Type(value), ...), // Parameters to pass as Solidity Types\n Arrays.asList(new TypeReference<Type>() {}, ...));\n\nString encodedFunction = FunctionEncoder.encode(function)\nTransaction transaction = Transaction.createFunctionCallTransaction(\n <from>, <gasPrice>, <gasLimit>, contractAddress, <funds>, encodedFunction);\n\norg.web3j.protocol.core.methods.response.EthSendTransaction transactionResponse =\n web3j.ethSendTransaction(transaction).sendAsync().get();\n\nString transactionHash = transactionResponse.getTransactionHash();\n\n// wait for response using EthGetTransactionReceipt...\n```\n\n无论消息签名的返回类型如何,都不可能从事务性函数调用返回值。但是,使用过滤器捕获函数返回的值是可能的。详情请参阅过滤器和事件部分。\n\n### 查询智能合约状态\n\n这种功能是由[eth_call](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call)通过`JSON-RPC`调用来实现的。\n\neth_call允许你调用智能合约上的方法来查询某个值。此函数没有关联交易成本,这是因为它不改变任何智能合约方法的状态,它只返回它们的值:\n\n```\nFunction function = new Function<>(\n \"functionName\",\n Arrays.asList(new Type(value)), // Solidity Types in smart contract functions\n Arrays.asList(new TypeReference<Type>() {}, ...));\n\nString encodedFunction = FunctionEncoder.encode(function)\norg.web3j.protocol.core.methods.response.EthCall response = web3j.ethCall(\n Transaction.createEthCallTransaction(<from>, contractAddress, encodedFunction),\n DefaultBlockParameterName.LATEST)\n .sendAsync().get();\n\nList<Type> someTypes = FunctionReturnDecoder.decode(\n response.getValue(), function.getOutputParameters());\n```\n\n**注意**:如果一个无效的函数调用被执行,或者得到一个空null返回结果时,返回值将是一个[Collections.emptyList](https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#emptyList--)实例。\n\n> - [web3j教程](http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2?affid=blog625),主要是针对java和android程序员进行区块链以太坊开发的web3j开发详解。\n> - [以太坊教程](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=blog625),主要介绍智能合约与dapp应用开发,适合入门。\n> - [以太坊开发](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=blog625),主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。\n\n\n汇智网原创翻译,转载请标明出处。原文访问[这里](https://docs.web3j.io/transactions.html)",
"json_metadata": "{\"tags\":[\"ethereum\",\"java\",\"android\",\"web3j\",\"blockchain\"],\"image\":[\"http://blog.hubwiz.com/2018/06/25/web3j-transactions/web3j_transaction.png\"],\"links\":[\"http://blog.hubwiz.com/2018/04/12/how-to-estimate-gas/\",\"https://ethereum-homestead.readthedocs.io/en/latest/network/test-networks.html#id3\",\"https://ethereum-homestead.readthedocs.io/en/latest/ether.html#list-of-centralised-exchange-marketplaces\",\"https://www.rinkeby.io/\",\"https://github.com/kovan-testnet/faucet\",\"https://gitter.im/web3j/web3j\",\"https://github.com/ethereum/go-ethereum/wiki/Mining\",\"https://github.com/paritytech/parity/wiki/Mining\",\"http://ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-transactions.html?highlight=gas#what-is-gas\",\"https://docs.web3j.io/transactions.html#transfer-of-ether\",\"https://ethstats.net/\",\"https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts\",\"https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/protocol/core/methods/response/EthSendTransaction.java\",\"https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/protocol/core/methods/request/Transaction.java\",\"https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/DeployContractIT.java\",\"https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/Scenario.java\",\"https://docs.web3j.io/management_apis.html\",\"https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/ECKeyPair.java#L41\",\"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\",\"https://github.com/web3j/web3j/blob/master/crypto/src/main/java/org/web3j/crypto/RawTransaction.java\",\"https://docs.web3j.io/rlp.html\",\"https://docs.web3j.io/transactions.html#wallet-files\",\"https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendrawtransaction\",\"https://github.com/web3j/web3j/blob/master/integration-tests/src/test/java/org/web3j/protocol/scenarios/CreateRawTransactionIT.java\",\"https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/tx/Transfer.java\",\"https://docs.web3j.io/smart_contracts.html#smart-contract-wrappers\",\"https://docs.web3j.io/abi.html\",\"https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call\",\"https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#emptyList--\",\"http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2?affid=blog625\",\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=blog625\",\"http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=blog625\",\"https://docs.web3j.io/transactions.html\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/06/19 06:40:51
2018/06/19 06:40:51
| parent author | peterchen145 |
| parent permlink | 36j8ec |
| author | jimi2018 |
| permlink | re-peterchen145-36j8ec-20180619t064404301z |
| title | |
| body | 推荐一个适合区块链开发新手入门的DApp实战教程:<a href="http://xc.hubwiz.com/course/5a952991adb3847553d205d1" >以太坊开发</a> |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1"],"app":"steemit/0.1"} |
| Transaction Info | Block #23451558/Trx 66b985cfd65aa0f5e5c5ee004ca204d854129934 |
View Raw JSON Data
{
"trx_id": "66b985cfd65aa0f5e5c5ee004ca204d854129934",
"block": 23451558,
"trx_in_block": 16,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-19T06:40:51",
"op": [
"comment",
{
"parent_author": "peterchen145",
"parent_permlink": "36j8ec",
"author": "jimi2018",
"permlink": "re-peterchen145-36j8ec-20180619t064404301z",
"title": "",
"body": "推荐一个适合区块链开发新手入门的DApp实战教程:<a href=\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1\" >以太坊开发</a>",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/06/09 04:59:42
2018/06/09 04:59:42
| parent author | |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | ethbox |
| title | 新手福利,EthBox以太坊开发套件,一键安装部署以太坊开发环境 |
| body | `EthBox`是汇智网为了方便以太坊开发学习者快速安装本地开发环境而制作的开发套件,可以一键安装以下必备开发工具: - nodejs:8.11.2 - git:2.17.1.2 - geth:1.8.10 - ganache-cli:6.1.0 - truffle:4.1.11 `EthBox`即支持采用仿真器进行快速开发验证,也支持使用标准 节点软件搭建私链测试,或接入公链进行部署。 `EthBox`的当前版本是0.0.1,目前仅适用于windows操作系统。 - [EthBox下载地址 - 百度云盘](https://pan.baidu.com/s/1sjqciE0CsAHj2Qnm5f51KA) - [EthBox使用说明](http://blog.hubwiz.com/2018/06/07/ethbox-readme/) - [以太坊教程](http://xc.hubwiz.com/course/5a952991adb3847553d205d1) - [以太坊电商实战教程](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6) ## 安装 执行下载到本地的`ethbox-setup.exe`启动安装程序:  点击[接受]按钮,进入安装目录选择:  点击[安装]按钮,开始执行安装过程:  安装完毕后,在桌面可以看到EthBox图标:  ## 启动仿真器 点击桌面的EthBox图标,即可进入EthBox环境:  执行`ganache-cli`启动仿真器: ``` C:\Users\user> ganache-cli ``` 显示如下结果,表示成功启动:  ## 创建truffle项目 再次点击桌面的EthBox图标,进入EthBox环境。 创建一个项目目录,然后执行`truffle unbox webpack`初始化项目文件: ``` C:\Users\user> md demo C:\Users\hubwiz\demo> truffle.cmd unbox webpack ``` 你将会看到如下结果:  在`Setting up...`处将需要等待一会儿,因为需要从网络下载项目依赖包。 ## 运行truffle项目 首先修改默认的`truffle.js`配置文件,将节点端口修改为8545 - 因为ganache-cli的监听端口是8545: ``` module.exports = { networks:{ development: { port: 8545 } } } ``` 然后修改`app/javascripts/app.js`中的节点URL,同样将端口修改为8545: ``` window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); ``` 现在执行`truffle compile`命令编译合约: ``` C:\Users\user\demo> truffle.cmd compile ``` 编译过程中有一些警告,暂时忽略即可。 然后执行`truffle migrate`部署合约: ``` C:\Users\user\demo> truffle.cmd migrate ``` 结果如下:  在部署过程中,如果你切换到ganache那个窗口,会看到一些交易信息 —— 部署合约也是一种交易:  一切就绪!可以启动web服务器了: ``` C:\Users\user\demo> npm run dev ``` 这个命令会执行内存打包并且启动一个在8080端口监听的web服务器:  现在,访问 http://localhost:8080 即可!  注意这句话: > You have 10000 META 这个`10000`是从链上(ganache-cli)取来的,因此看到这个数字,就意味着,你的以太坊开发环境部署成功! 原文:http://blog.hubwiz.com/2018/06/07/ethbox-readme/ |
| json metadata | {"tags":["ethereum","blockchain","dapp","solidity","truffle"],"image":["http://upload-images.jianshu.io/upload_images/11831773-2593db28bf4f87ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-36ba6137710e0aca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-55e124f4a398f95b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-d2aa396f9de84244.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-5c2a695472c2f2df.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-a99facdd013705b8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-10d4778db30e60f1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-5d0c3ecb34289f72.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-f211650dc0f61e4e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-d2dc21ec85087bc4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-16e1a2a7f5432e25.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"],"links":["https://pan.baidu.com/s/1sjqciE0CsAHj2Qnm5f51KA","http://blog.hubwiz.com/2018/06/07/ethbox-readme/","http://xc.hubwiz.com/course/5a952991adb3847553d205d1","http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6","http://localhost:8080"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #23162160/Trx ce925bb6a87f065078cce87e8e7f3ba542b49565 |
View Raw JSON Data
{
"trx_id": "ce925bb6a87f065078cce87e8e7f3ba542b49565",
"block": 23162160,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-09T04:59:42",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "ethbox",
"title": "新手福利,EthBox以太坊开发套件,一键安装部署以太坊开发环境",
"body": "`EthBox`是汇智网为了方便以太坊开发学习者快速安装本地开发环境而制作的开发套件,可以一键安装以下必备开发工具:\n\n- nodejs:8.11.2\n- git:2.17.1.2\n- geth:1.8.10\n- ganache-cli:6.1.0\n- truffle:4.1.11\n\n`EthBox`即支持采用仿真器进行快速开发验证,也支持使用标准\n节点软件搭建私链测试,或接入公链进行部署。\n\n`EthBox`的当前版本是0.0.1,目前仅适用于windows操作系统。\n\n- [EthBox下载地址 - 百度云盘](https://pan.baidu.com/s/1sjqciE0CsAHj2Qnm5f51KA)\n- [EthBox使用说明](http://blog.hubwiz.com/2018/06/07/ethbox-readme/)\n- [以太坊教程](http://xc.hubwiz.com/course/5a952991adb3847553d205d1)\n- [以太坊电商实战教程](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6)\n\n## 安装\n\n执行下载到本地的`ethbox-setup.exe`启动安装程序:\n\n\n\n点击[接受]按钮,进入安装目录选择:\n\n\n\n点击[安装]按钮,开始执行安装过程:\n\n\n\n安装完毕后,在桌面可以看到EthBox图标:\n\n\n\n\n## 启动仿真器\n\n点击桌面的EthBox图标,即可进入EthBox环境:\n\n\n\n执行`ganache-cli`启动仿真器:\n\n```\nC:\\Users\\user> ganache-cli\n```\n\n显示如下结果,表示成功启动:\n\n\n\n## 创建truffle项目\n\n再次点击桌面的EthBox图标,进入EthBox环境。\n\n创建一个项目目录,然后执行`truffle unbox webpack`初始化项目文件:\n\n```\nC:\\Users\\user> md demo\nC:\\Users\\hubwiz\\demo> truffle.cmd unbox webpack\n```\n\n你将会看到如下结果:\n\n\n\n在`Setting up...`处将需要等待一会儿,因为需要从网络下载项目依赖包。\n\n## 运行truffle项目\n\n首先修改默认的`truffle.js`配置文件,将节点端口修改为8545 - 因为ganache-cli的监听端口是8545:\n\n```\nmodule.exports = {\n networks:{\n development: {\n port: 8545\n }\n }\n}\n```\n\n然后修改`app/javascripts/app.js`中的节点URL,同样将端口修改为8545:\n\n```\nwindow.web3 = new Web3(new Web3.providers.HttpProvider(\"http://localhost:8545\"));\n```\n\n现在执行`truffle compile`命令编译合约:\n\n```\nC:\\Users\\user\\demo> truffle.cmd compile\n```\n\n编译过程中有一些警告,暂时忽略即可。\n\n然后执行`truffle migrate`部署合约:\n\n```\nC:\\Users\\user\\demo> truffle.cmd migrate\n```\n\n结果如下:\n\n\n\n在部署过程中,如果你切换到ganache那个窗口,会看到一些交易信息 —— 部署合约也是一种交易:\n\n\n\n一切就绪!可以启动web服务器了:\n\n```\nC:\\Users\\user\\demo> npm run dev\n```\n\n这个命令会执行内存打包并且启动一个在8080端口监听的web服务器:\n\n\n\n现在,访问 http://localhost:8080 即可!\n\n\n\n注意这句话:\n\n> You have 10000 META\n\n这个`10000`是从链上(ganache-cli)取来的,因此看到这个数字,就意味着,你的以太坊开发环境部署成功!\n\n原文:http://blog.hubwiz.com/2018/06/07/ethbox-readme/",
"json_metadata": "{\"tags\":[\"ethereum\",\"blockchain\",\"dapp\",\"solidity\",\"truffle\"],\"image\":[\"http://upload-images.jianshu.io/upload_images/11831773-2593db28bf4f87ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-36ba6137710e0aca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-55e124f4a398f95b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-d2aa396f9de84244.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-5c2a695472c2f2df.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-a99facdd013705b8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-10d4778db30e60f1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-5d0c3ecb34289f72.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-f211650dc0f61e4e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-d2dc21ec85087bc4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-16e1a2a7f5432e25.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\"],\"links\":[\"https://pan.baidu.com/s/1sjqciE0CsAHj2Qnm5f51KA\",\"http://blog.hubwiz.com/2018/06/07/ethbox-readme/\",\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1\",\"http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6\",\"http://localhost:8080\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}cheetahreplied to @jimi2018 / cheetah-re-jimi20187v1rpd2018/05/30 03:53:06
cheetahreplied to @jimi2018 / cheetah-re-jimi20187v1rpd
2018/05/30 03:53:06
| parent author | jimi2018 |
| parent permlink | 7v1rpd |
| author | cheetah |
| permlink | cheetah-re-jimi20187v1rpd |
| title | |
| body | Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in: https://blog.csdn.net/mongo_node/article/details/80491713 |
| json metadata | |
| Transaction Info | Block #22872930/Trx d14a95cf192b23b3de40c36f0b73095ff8762dc6 |
View Raw JSON Data
{
"trx_id": "d14a95cf192b23b3de40c36f0b73095ff8762dc6",
"block": 22872930,
"trx_in_block": 54,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-30T03:53:06",
"op": [
"comment",
{
"parent_author": "jimi2018",
"parent_permlink": "7v1rpd",
"author": "cheetah",
"permlink": "cheetah-re-jimi20187v1rpd",
"title": "",
"body": "Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:\nhttps://blog.csdn.net/mongo_node/article/details/80491713",
"json_metadata": ""
}
]
}2018/05/30 03:52:51
2018/05/30 03:52:51
| voter | cheetah |
| author | jimi2018 |
| permlink | 7v1rpd |
| weight | 8 (0.08%) |
| Transaction Info | Block #22872925/Trx f0031f3a0112d6096014eae6cceff0a669d1518d |
View Raw JSON Data
{
"trx_id": "f0031f3a0112d6096014eae6cceff0a669d1518d",
"block": 22872925,
"trx_in_block": 34,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-30T03:52:51",
"op": [
"vote",
{
"voter": "cheetah",
"author": "jimi2018",
"permlink": "7v1rpd",
"weight": 8
}
]
}2018/05/29 09:34:30
2018/05/29 09:34:30
| voter | ax3 |
| author | jimi2018 |
| permlink | 7v1rpd |
| weight | 100 (1.00%) |
| Transaction Info | Block #22850958/Trx b8fcb1868f4a2ed696047ab9b6f5159b36a92cbd |
View Raw JSON Data
{
"trx_id": "b8fcb1868f4a2ed696047ab9b6f5159b36a92cbd",
"block": 22850958,
"trx_in_block": 49,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-29T09:34:30",
"op": [
"vote",
{
"voter": "ax3",
"author": "jimi2018",
"permlink": "7v1rpd",
"weight": 100
}
]
}2018/05/29 09:34:21
2018/05/29 09:34:21
| parent author | |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | 7v1rpd |
| title | 什么是以太坊?什么是智能合约? |
| body |  以太坊是一个分布式的计算平台。它会生成一个名为Ether的加密货币。程序员可以在以太坊区块链上写下“智能合约”,这些以太坊智能合约会根据代码自动执行。 ### 以太坊是什么? 以太坊经常与比特币相提并论,但情况却有所不同。比特币是一种加密货币和分布式支付网络,允许比特币在用户之间转移。 > 相关:[什么是比特币?它是如何工作的?](https://www.howtogeek.com/141374/htg-explains-what-is-bitcoin-and-how-does-it-work/) 以太坊项目有更大的目标。正如Ethereum网站所说,“以太坊是一个运行智能合约的分布式平台”。这些智能合约运行在“以太坊虚拟机”上,这是一个由所有运行以太网节点的设备组成的分布式计算网络。 “分布式平台”部分意味着任何人都可以建立并运行以太坊节点,就像任何人都可以运行比特币节点一样。任何想要在节点上运行“智能合约”的人都必须向Ether中的这些节点的运营商付款,这是一个与以太坊相关的加密货币。因此,运行以太网节点的人提供计算能力,并在以太网中获得支付,这与运行比特币节点的人提供哈希能力并以比特币支付的方式类似。 换句话说,虽然比特币仅仅是一个区块链和支付网络,但以太坊是一个分布式计算网络,其区块链可以用于许多其他事情。[以太坊白皮书](https://pan.baidu.com/s/1bzAFnzJ35hlQxJ2J4Oj-Ow)中提供了详细信息。 ### 以太是什么? 以太网是与以太坊区块链相关的数字标记(或者说就是加密货币)。换句话说,以太是代币,以太坊是平台。但是,现在人们经常交替使用这些术语。例如,Coinbase允许你购买以太坊代币(Ethereum),即代表以太币代币。 这在技术上就是“[altcoin](https://www.howtogeek.com/341972/what-are-altcoins-and-why-do-they-exist/)”,这实际上意味着一个非比特币加密货币。和比特币一样,Ether也受到分布式区块链支持 - 在这种情况下是以太坊区块链。 想要在以太坊区块链上创建应用程序或[以太坊 智能合约](http://xc.hubwiz.com/course/5a952991adb3847553d205d1)的开发人员需要以太网代币来支付节点来托管它,而基于以太坊的应用程序的用户可能需要以太网来支付这些应用程序中的服务费用。人们也可以在以太坊网络之外销售服务,并接受以太网支付,或者可以在交易所以现金形式出售以太币代币 - 就像比特币一样。 ### 为什么分布式应用程序有趣?  比特币区块链存储比特币交易的历史,就是这样。以太坊区块链将以太币代币存储在人们的钱包中,但它还存储每个智能合约的最新状态以及每个智能合约的代码。 区块链是存储在多个位置的分布式账本,所以这意味着智能合约数据由那些以太坊节点存储。如果您在区块链上创建“智能合约”(也称为应用程序),则会以分布式的方式进行存储和运行。 为了比较,请考虑我们今天使用的许多应用程序。这包括Gmail等电子邮件应用程序,Microsoft OneNote等笔记记录应用程序,以及使用应用程序并将数据存储在公司服务器上的任何其他应用程序。如果存储数据的公司禁止您的帐户,关闭应用程序或停业,那么除非您有脱机备份副本,否则您将丢失该应用程序中的所有数据。 如果您使用的是构建在以太坊之上的应用程序,组成应用程序的代码(智能合约代码)和个人数据(智能合约的状态)将存储在区块链中。每当您使用应用程序并更改数据时,所有以太坊节点都会更新智能合约的状态。这意味着没有中央“失败点”可能会阻止您访问数据或关闭您使用的应用程序。您的数据和应用程序的代码本身将在全球范围内备份,并且没有人可以将所有这些备忘录脱机。当然,您的数据将通过区块链进行加密,所以没有其他人可以读取它。 ### 什么是智能合约? 智能合约是在以太坊虚拟机上运行的应用程序。这是一个分布的“世界计算机”,计算能力由所有以太坊节点提供。提供计算能力的任何节点都将以Ether数字货币作为资源支付。 他们被命名为智能合约,因为您可以编写满足要求时自动执行的“合同”。 例如,想象一下在以太坊之上建立一个类似Kickstarter的众筹服务。有人可以建立一个[以太坊智能合约](http://xc.hubwiz.com/course/5a952991adb3847553d205d1),将资金汇集到别人身上。这个智能合约可以写成这样的话:当将100,000美元的货币添加到池中时,它将全部发送给收件人。或者,如果一个月内没有达到100,000美元的门槛,所有的货币都将被发回给货币的原始持有人。当然,这将使用以太币代替美元。 这一切都将根据智能合同代码进行,智能合同代码可自动执行交易,而无需可信任的第三方持有货币并签署交易。例如,Kickstarter在5%的付款处理费之上收取5%的费用,这意味着在$ 100,000的众筹项目中将收取8000到10000美元的费用。智能合约不需要向像Kickstarter这样的第三方支付费用。 智能合约可以用于许多不同的事情。开发人员可以创建智能合约,为其他智能合约提供功能,类似于软件库的工作方式。或者,智能合约可以简单地用作应用程序来存储以太坊区块链上的信息。 为了真正执行智能合同代码,有人必须发送足够的以太网代币作为交易费 - 多少取决于所需的计算资源。这为以太坊节点参与并提供计算能力付出了代价。 ### CryptoKitties使用智能合约  在以太坊网络上使用智能合约构建的最知名的应用之一是CryptoKitties,它自称是“世界上第一款基于区块链技术构建的游戏”。 从本质上讲,CryptoKitties是存储在以太坊区块链中的一种数字“可收集”形式。 CryptoKitties提供了在Ethereum网络上存储和交换数字项目的能力的良好演示。 新的CryptoKitties是通过“繁殖”生成的。这涉及到选择两个基本的CryptoKitties并花费以太币代币运行智能合约。合约使用两只选择的猫来产生新的CryptoKitty。这些小猫和繁殖过程的细节存储在以太坊区块链的公共账本上。 您可以“拥有”CryptoKitties,它们存储在以太坊区块链分类账中。您可以将其出售或交易给其他人,也可以购买。这与使用允许您购买,交易和养殖猫的智能手机应用程序不同。这些通常会存储在应用程序自己的服务器上,如果公司关闭应用程序或禁止您的帐户,则可能会丢失珍贵的数字宠物。但是,因为CryptoKitties存储在区块链中,所以不会发生。没有人能把你的小猫带走。 2017年12月 - 巧合的是,在比特币的历史最高价格附近,人们花费了超过1200万美元的CryptoKitties的Ether费用,而最昂贵的CryptoKitty售价约为12万美元。 像以太网,比特币和昂贵的绘画一样,CryptoKitties值得人们准备为它们付钱。 原文:howtogeek.com/350322/what-is-ethereum-and-what-are-smart-contracts 作者: Chris Hoffman |
| json metadata | {"tags":["ethereum","blockchain","smart","contract"],"image":["http://upload-images.jianshu.io/upload_images/11831773-b4c4b20efddd1e04.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-a9f7854bee7aac24.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240","http://upload-images.jianshu.io/upload_images/11831773-782dd726d9f3aa27.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"],"links":["https://www.howtogeek.com/141374/htg-explains-what-is-bitcoin-and-how-does-it-work/","https://pan.baidu.com/s/1bzAFnzJ35hlQxJ2J4Oj-Ow","https://www.howtogeek.com/341972/what-are-altcoins-and-why-do-they-exist/","http://xc.hubwiz.com/course/5a952991adb3847553d205d1"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #22850955/Trx 6ef6178822df6b46251a1e65f76e41cc33bc06d3 |
View Raw JSON Data
{
"trx_id": "6ef6178822df6b46251a1e65f76e41cc33bc06d3",
"block": 22850955,
"trx_in_block": 11,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-29T09:34:21",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "7v1rpd",
"title": "什么是以太坊?什么是智能合约?",
"body": "\n\n以太坊是一个分布式的计算平台。它会生成一个名为Ether的加密货币。程序员可以在以太坊区块链上写下“智能合约”,这些以太坊智能合约会根据代码自动执行。\n\n### 以太坊是什么?\n以太坊经常与比特币相提并论,但情况却有所不同。比特币是一种加密货币和分布式支付网络,允许比特币在用户之间转移。\n\n> 相关:[什么是比特币?它是如何工作的?](https://www.howtogeek.com/141374/htg-explains-what-is-bitcoin-and-how-does-it-work/)\n\n以太坊项目有更大的目标。正如Ethereum网站所说,“以太坊是一个运行智能合约的分布式平台”。这些智能合约运行在“以太坊虚拟机”上,这是一个由所有运行以太网节点的设备组成的分布式计算网络。\n\n“分布式平台”部分意味着任何人都可以建立并运行以太坊节点,就像任何人都可以运行比特币节点一样。任何想要在节点上运行“智能合约”的人都必须向Ether中的这些节点的运营商付款,这是一个与以太坊相关的加密货币。因此,运行以太网节点的人提供计算能力,并在以太网中获得支付,这与运行比特币节点的人提供哈希能力并以比特币支付的方式类似。\n\n换句话说,虽然比特币仅仅是一个区块链和支付网络,但以太坊是一个分布式计算网络,其区块链可以用于许多其他事情。[以太坊白皮书](https://pan.baidu.com/s/1bzAFnzJ35hlQxJ2J4Oj-Ow)中提供了详细信息。\n\n### 以太是什么?\n\n以太网是与以太坊区块链相关的数字标记(或者说就是加密货币)。换句话说,以太是代币,以太坊是平台。但是,现在人们经常交替使用这些术语。例如,Coinbase允许你购买以太坊代币(Ethereum),即代表以太币代币。\n\n这在技术上就是“[altcoin](https://www.howtogeek.com/341972/what-are-altcoins-and-why-do-they-exist/)”,这实际上意味着一个非比特币加密货币。和比特币一样,Ether也受到分布式区块链支持 - 在这种情况下是以太坊区块链。\n\n想要在以太坊区块链上创建应用程序或[以太坊 智能合约](http://xc.hubwiz.com/course/5a952991adb3847553d205d1)的开发人员需要以太网代币来支付节点来托管它,而基于以太坊的应用程序的用户可能需要以太网来支付这些应用程序中的服务费用。人们也可以在以太坊网络之外销售服务,并接受以太网支付,或者可以在交易所以现金形式出售以太币代币 - 就像比特币一样。\n\n### 为什么分布式应用程序有趣?\n\n\n\n比特币区块链存储比特币交易的历史,就是这样。以太坊区块链将以太币代币存储在人们的钱包中,但它还存储每个智能合约的最新状态以及每个智能合约的代码。\n\n区块链是存储在多个位置的分布式账本,所以这意味着智能合约数据由那些以太坊节点存储。如果您在区块链上创建“智能合约”(也称为应用程序),则会以分布式的方式进行存储和运行。\n\n为了比较,请考虑我们今天使用的许多应用程序。这包括Gmail等电子邮件应用程序,Microsoft OneNote等笔记记录应用程序,以及使用应用程序并将数据存储在公司服务器上的任何其他应用程序。如果存储数据的公司禁止您的帐户,关闭应用程序或停业,那么除非您有脱机备份副本,否则您将丢失该应用程序中的所有数据。\n\n如果您使用的是构建在以太坊之上的应用程序,组成应用程序的代码(智能合约代码)和个人数据(智能合约的状态)将存储在区块链中。每当您使用应用程序并更改数据时,所有以太坊节点都会更新智能合约的状态。这意味着没有中央“失败点”可能会阻止您访问数据或关闭您使用的应用程序。您的数据和应用程序的代码本身将在全球范围内备份,并且没有人可以将所有这些备忘录脱机。当然,您的数据将通过区块链进行加密,所以没有其他人可以读取它。\n\n### 什么是智能合约?\n\n智能合约是在以太坊虚拟机上运行的应用程序。这是一个分布的“世界计算机”,计算能力由所有以太坊节点提供。提供计算能力的任何节点都将以Ether数字货币作为资源支付。\n\n他们被命名为智能合约,因为您可以编写满足要求时自动执行的“合同”。\n\n例如,想象一下在以太坊之上建立一个类似Kickstarter的众筹服务。有人可以建立一个[以太坊智能合约](http://xc.hubwiz.com/course/5a952991adb3847553d205d1),将资金汇集到别人身上。这个智能合约可以写成这样的话:当将100,000美元的货币添加到池中时,它将全部发送给收件人。或者,如果一个月内没有达到100,000美元的门槛,所有的货币都将被发回给货币的原始持有人。当然,这将使用以太币代替美元。\n\n这一切都将根据智能合同代码进行,智能合同代码可自动执行交易,而无需可信任的第三方持有货币并签署交易。例如,Kickstarter在5%的付款处理费之上收取5%的费用,这意味着在$ 100,000的众筹项目中将收取8000到10000美元的费用。智能合约不需要向像Kickstarter这样的第三方支付费用。\n\n智能合约可以用于许多不同的事情。开发人员可以创建智能合约,为其他智能合约提供功能,类似于软件库的工作方式。或者,智能合约可以简单地用作应用程序来存储以太坊区块链上的信息。\n\n为了真正执行智能合同代码,有人必须发送足够的以太网代币作为交易费 - 多少取决于所需的计算资源。这为以太坊节点参与并提供计算能力付出了代价。\n\n### CryptoKitties使用智能合约\n\n\n\n\n在以太坊网络上使用智能合约构建的最知名的应用之一是CryptoKitties,它自称是“世界上第一款基于区块链技术构建的游戏”。\n\n从本质上讲,CryptoKitties是存储在以太坊区块链中的一种数字“可收集”形式。 CryptoKitties提供了在Ethereum网络上存储和交换数字项目的能力的良好演示。\n\n新的CryptoKitties是通过“繁殖”生成的。这涉及到选择两个基本的CryptoKitties并花费以太币代币运行智能合约。合约使用两只选择的猫来产生新的CryptoKitty。这些小猫和繁殖过程的细节存储在以太坊区块链的公共账本上。\n\n您可以“拥有”CryptoKitties,它们存储在以太坊区块链分类账中。您可以将其出售或交易给其他人,也可以购买。这与使用允许您购买,交易和养殖猫的智能手机应用程序不同。这些通常会存储在应用程序自己的服务器上,如果公司关闭应用程序或禁止您的帐户,则可能会丢失珍贵的数字宠物。但是,因为CryptoKitties存储在区块链中,所以不会发生。没有人能把你的小猫带走。\n\n2017年12月 - 巧合的是,在比特币的历史最高价格附近,人们花费了超过1200万美元的CryptoKitties的Ether费用,而最昂贵的CryptoKitty售价约为12万美元。\n\n像以太网,比特币和昂贵的绘画一样,CryptoKitties值得人们准备为它们付钱。\n\n原文:howtogeek.com/350322/what-is-ethereum-and-what-are-smart-contracts\n作者: Chris Hoffman",
"json_metadata": "{\"tags\":[\"ethereum\",\"blockchain\",\"smart\",\"contract\"],\"image\":[\"http://upload-images.jianshu.io/upload_images/11831773-b4c4b20efddd1e04.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-a9f7854bee7aac24.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\",\"http://upload-images.jianshu.io/upload_images/11831773-782dd726d9f3aa27.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240\"],\"links\":[\"https://www.howtogeek.com/141374/htg-explains-what-is-bitcoin-and-how-does-it-work/\",\"https://pan.baidu.com/s/1bzAFnzJ35hlQxJ2J4Oj-Ow\",\"https://www.howtogeek.com/341972/what-are-altcoins-and-why-do-they-exist/\",\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}jimi2018upvoted (100.00%) @jimi2018 / re-fblife-4uslux-20180417t024229430z2018/05/22 02:55:18
jimi2018upvoted (100.00%) @jimi2018 / re-fblife-4uslux-20180417t024229430z
2018/05/22 02:55:18
| voter | jimi2018 |
| author | jimi2018 |
| permlink | re-fblife-4uslux-20180417t024229430z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #22641784/Trx 50b944cf2999089a0e0aad9c2be75696e8000f6a |
View Raw JSON Data
{
"trx_id": "50b944cf2999089a0e0aad9c2be75696e8000f6a",
"block": 22641784,
"trx_in_block": 11,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-22T02:55:18",
"op": [
"vote",
{
"voter": "jimi2018",
"author": "jimi2018",
"permlink": "re-fblife-4uslux-20180417t024229430z",
"weight": 10000
}
]
}2018/05/07 08:01:45
2018/05/07 08:01:45
| parent author | speeding |
| parent permlink | smart-contract-development0 |
| author | jimi2018 |
| permlink | re-speeding-smart-contract-development0-20180507t080433253z |
| title | |
| body | 真牛。安利个以太坊dapp教程:http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180507steemit |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180507steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #22215970/Trx aab81a7e1c41110bcf62efa629e1fdd66662877d |
View Raw JSON Data
{
"trx_id": "aab81a7e1c41110bcf62efa629e1fdd66662877d",
"block": 22215970,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-07T08:01:45",
"op": [
"comment",
{
"parent_author": "speeding",
"parent_permlink": "smart-contract-development0",
"author": "jimi2018",
"permlink": "re-speeding-smart-contract-development0-20180507t080433253z",
"title": "",
"body": "真牛。安利个以太坊dapp教程:http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180507steemit",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180507steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}jimi2018replied to @fblife / re-fblife-4uslux-20180417t024229430z2018/04/17 02:40:00
jimi2018replied to @fblife / re-fblife-4uslux-20180417t024229430z
2018/04/17 02:40:00
| parent author | fblife |
| parent permlink | 4uslux |
| author | jimi2018 |
| permlink | re-fblife-4uslux-20180417t024229430z |
| title | |
| body | 谢谢楼主分享!推荐一个区块链新手入门的以太坊DApp开发教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180417steemit |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180417steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #21634314/Trx 38c0fd21dc7a144de9f7d9e742bbf326c25e6ceb |
View Raw JSON Data
{
"trx_id": "38c0fd21dc7a144de9f7d9e742bbf326c25e6ceb",
"block": 21634314,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-17T02:40:00",
"op": [
"comment",
{
"parent_author": "fblife",
"parent_permlink": "4uslux",
"author": "jimi2018",
"permlink": "re-fblife-4uslux-20180417t024229430z",
"title": "",
"body": "谢谢楼主分享!推荐一个区块链新手入门的以太坊DApp开发教程:\nhttp://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180417steemit",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180417steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/04/15 09:41:36
2018/04/15 09:41:36
| parent author | ankar |
| parent permlink | ethereum-remix |
| author | jimi2018 |
| permlink | re-ankar-ethereum-remix-20180415t094410128z |
| title | |
| body | 区块链开发、以太坊开发的技术资料资源汇总 一个适合区块链新手的以太坊DApp开发教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180415steemit 一个用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台: http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180415steemit |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180415steemit","http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180415steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #21585149/Trx c2b65960f594c48ed86cceb4e0f6bc00fd845a8d |
View Raw JSON Data
{
"trx_id": "c2b65960f594c48ed86cceb4e0f6bc00fd845a8d",
"block": 21585149,
"trx_in_block": 27,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-15T09:41:36",
"op": [
"comment",
{
"parent_author": "ankar",
"parent_permlink": "ethereum-remix",
"author": "jimi2018",
"permlink": "re-ankar-ethereum-remix-20180415t094410128z",
"title": "",
"body": "区块链开发、以太坊开发的技术资料资源汇总\n\n一个适合区块链新手的以太坊DApp开发教程:\nhttp://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180415steemit\n\n一个用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台:\nhttp://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180415steemit",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180415steemit\",\"http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180415steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/04/15 09:28:33
2018/04/15 09:28:33
| parent author | speeding |
| parent permlink | smart-contract-development2 |
| author | jimi2018 |
| permlink | re-speeding-smart-contract-development2-20180415t093108129z |
| title | |
| body | 推荐两个区块链、以太坊开发DApp的实战教程: 1. 适合区块链新手的以太坊DApp开发: http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180415steemit 2. 用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台: http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180415steemit |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180415steemit","http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180415steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #21584888/Trx 5aa6dfd1a64d00edfcdd35b0691aeeae11308f58 |
View Raw JSON Data
{
"trx_id": "5aa6dfd1a64d00edfcdd35b0691aeeae11308f58",
"block": 21584888,
"trx_in_block": 46,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-15T09:28:33",
"op": [
"comment",
{
"parent_author": "speeding",
"parent_permlink": "smart-contract-development2",
"author": "jimi2018",
"permlink": "re-speeding-smart-contract-development2-20180415t093108129z",
"title": "",
"body": "推荐两个区块链、以太坊开发DApp的实战教程:\n\n1. 适合区块链新手的以太坊DApp开发:\nhttp://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180415steemit\n\n2. 用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台:\nhttp://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180415steemit",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180415steemit\",\"http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180415steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/04/12 10:27:06
2018/04/12 10:27:06
| parent author | peterchen145 |
| parent permlink | 3zgypc |
| author | jimi2018 |
| permlink | re-peterchen145-3zgypc-20180412t102933702z |
| title | |
| body | 推荐两个区块链、以太坊开发DApp的实战教程: 1. 适合区块链新手的以太坊DApp开发: http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412steemit 2. 用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台: http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412steemit |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412steemit","http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #21499678/Trx 3140e19e30c23533d5a85fd13d217713e13d0aed |
View Raw JSON Data
{
"trx_id": "3140e19e30c23533d5a85fd13d217713e13d0aed",
"block": 21499678,
"trx_in_block": 9,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-12T10:27:06",
"op": [
"comment",
{
"parent_author": "peterchen145",
"parent_permlink": "3zgypc",
"author": "jimi2018",
"permlink": "re-peterchen145-3zgypc-20180412t102933702z",
"title": "",
"body": "推荐两个区块链、以太坊开发DApp的实战教程:\n\n1. 适合区块链新手的以太坊DApp开发:\nhttp://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412steemit\n\n2. 用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台:\nhttp://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412steemit",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412steemit\",\"http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}jimi2018upvoted (100.00%) @jimi2018 / re-lucia3-ethereum-pet-shop-20180412t082933350z2018/04/12 08:27:09
jimi2018upvoted (100.00%) @jimi2018 / re-lucia3-ethereum-pet-shop-20180412t082933350z
2018/04/12 08:27:09
| voter | jimi2018 |
| author | jimi2018 |
| permlink | re-lucia3-ethereum-pet-shop-20180412t082933350z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21497280/Trx c71ad8c08c6b5ab401947e70d7c5752c5a5fa49c |
View Raw JSON Data
{
"trx_id": "c71ad8c08c6b5ab401947e70d7c5752c5a5fa49c",
"block": 21497280,
"trx_in_block": 46,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-12T08:27:09",
"op": [
"vote",
{
"voter": "jimi2018",
"author": "jimi2018",
"permlink": "re-lucia3-ethereum-pet-shop-20180412t082933350z",
"weight": 10000
}
]
}2018/04/12 08:27:00
2018/04/12 08:27:00
| parent author | lucia3 |
| parent permlink | ethereum-pet-shop |
| author | jimi2018 |
| permlink | re-lucia3-ethereum-pet-shop-20180412t082933350z |
| title | |
| body | 推荐两个区块链、以太坊开发DApp的实战教程: 1. 适合区块链新手的以太坊DApp开发: http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412steemit 2. 用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台: http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412steemit |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412steemit","http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #21497277/Trx 88203b961e0238c5b4eba8267d16acbc30bcea2b |
View Raw JSON Data
{
"trx_id": "88203b961e0238c5b4eba8267d16acbc30bcea2b",
"block": 21497277,
"trx_in_block": 55,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-12T08:27:00",
"op": [
"comment",
{
"parent_author": "lucia3",
"parent_permlink": "ethereum-pet-shop",
"author": "jimi2018",
"permlink": "re-lucia3-ethereum-pet-shop-20180412t082933350z",
"title": "",
"body": "推荐两个区块链、以太坊开发DApp的实战教程:\n\n1. 适合区块链新手的以太坊DApp开发:\nhttp://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412steemit\n\n2. 用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台:\nhttp://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412steemit",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180412steemit\",\"http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6/?affid=20180412steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/04/10 07:59:30
2018/04/10 07:59:30
| parent author | conanchain |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | re-conanchain-ethereum-20180410t080157729z |
| title | |
| body | 谢谢楼主分享!推荐一个区块链新手入门的以太坊DApp开发教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180410steemit |
| json metadata | {"tags":["bitcoin"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180410steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #21439133/Trx 4782e6401897f56f68e3ed22a231d5d195488f06 |
View Raw JSON Data
{
"trx_id": "4782e6401897f56f68e3ed22a231d5d195488f06",
"block": 21439133,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-10T07:59:30",
"op": [
"comment",
{
"parent_author": "conanchain",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "re-conanchain-ethereum-20180410t080157729z",
"title": "",
"body": "谢谢楼主分享!推荐一个区块链新手入门的以太坊DApp开发教程:\nhttp://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180410steemit",
"json_metadata": "{\"tags\":[\"bitcoin\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180410steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/03/28 09:01:24
2018/03/28 09:01:24
| parent author | semlinker |
| parent permlink | 2u7csu |
| author | jimi2018 |
| permlink | re-semlinker-2u7csu-20180328t090329347z |
| title | |
| body | 补充分享一个以太坊DApp开发入门教程:[http://xc.hubwiz.com/course/5a952991adb3847553d205d1](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180328steemit) |
| json metadata | {"tags":["blockchain"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180328steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #21066046/Trx 0a0455d66779446783bda59fa89739812da4e18e |
View Raw JSON Data
{
"trx_id": "0a0455d66779446783bda59fa89739812da4e18e",
"block": 21066046,
"trx_in_block": 16,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-28T09:01:24",
"op": [
"comment",
{
"parent_author": "semlinker",
"parent_permlink": "2u7csu",
"author": "jimi2018",
"permlink": "re-semlinker-2u7csu-20180328t090329347z",
"title": "",
"body": "补充分享一个以太坊DApp开发入门教程:[http://xc.hubwiz.com/course/5a952991adb3847553d205d1](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180328steemit)",
"json_metadata": "{\"tags\":[\"blockchain\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180328steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}cheetahreplied to @jimi2018 / cheetah-re-jimi2018dapp2018/03/21 05:50:36
cheetahreplied to @jimi2018 / cheetah-re-jimi2018dapp
2018/03/21 05:50:36
| parent author | jimi2018 |
| parent permlink | dapp |
| author | cheetah |
| permlink | cheetah-re-jimi2018dapp |
| title | |
| body | Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in: https://my.oschina.net/u/2275217/blog/1627882 |
| json metadata | |
| Transaction Info | Block #20861448/Trx 3846c83f7fd0785ac987c795e3a190efaa3f77fa |
View Raw JSON Data
{
"trx_id": "3846c83f7fd0785ac987c795e3a190efaa3f77fa",
"block": 20861448,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-21T05:50:36",
"op": [
"comment",
{
"parent_author": "jimi2018",
"parent_permlink": "dapp",
"author": "cheetah",
"permlink": "cheetah-re-jimi2018dapp",
"title": "",
"body": "Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:\nhttps://my.oschina.net/u/2275217/blog/1627882",
"json_metadata": ""
}
]
}2018/03/21 05:50:30
2018/03/21 05:50:30
| voter | cheetah |
| author | jimi2018 |
| permlink | dapp |
| weight | 8 (0.08%) |
| Transaction Info | Block #20861446/Trx 1e87f8c6d0bf18cc5ef6c6de58ea44f8f09fdffd |
View Raw JSON Data
{
"trx_id": "1e87f8c6d0bf18cc5ef6c6de58ea44f8f09fdffd",
"block": 20861446,
"trx_in_block": 40,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-21T05:50:30",
"op": [
"vote",
{
"voter": "cheetah",
"author": "jimi2018",
"permlink": "dapp",
"weight": 8
}
]
}2018/03/21 05:50:21
2018/03/21 05:50:21
| voter | jimi2018 |
| author | jimi2018 |
| permlink | dapp |
| weight | 10000 (100.00%) |
| Transaction Info | Block #20861443/Trx 3efbbe67dc5d72dea66f06383a480b7fd9eefb02 |
View Raw JSON Data
{
"trx_id": "3efbbe67dc5d72dea66f06383a480b7fd9eefb02",
"block": 20861443,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-21T05:50:21",
"op": [
"vote",
{
"voter": "jimi2018",
"author": "jimi2018",
"permlink": "dapp",
"weight": 10000
}
]
}2018/03/21 05:50:21
2018/03/21 05:50:21
| parent author | |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | dapp |
| title | 以太坊开发 之 DApp入门,如何使用智能合约搭建一个区块链投票系统。 |
| body | **第一节 概述** 对于初学者,需要了解以太坊开发相关的基本概念,另外就是如何构建一个基于以太坊的完整去中心化应用例如一个区块链投票系统。  通过学习,你将掌握: * 以太坊区块链的基本知识 * 开发和部署以太坊合约所需的软件环境 * 使用高级语言(`solidity`)编写以太坊合约 * 使用NodeJS编译、部署合约并与之交互 * 使用`Truffle`框架开发分布式应用 * 使用控制台或网页与合约进行交互 以太坊开发的前序知识要求 为了顺利完成本课程,最好对以下技术已经有一些基本了解: * 一种面向对象的开发语言,例如:Python,Ruby,Java... * 前端开发语言:HTML/CSS/JavaScript * Linux命令行的使用 * 数据库的基本概念 **第二节 简介** 我们将会构建一个去中心化的(`Decentralized`)投票应用。利用这个投票应用, 用户可以在不可信(`trustless`)的分布环境中对特定候选人投票,每次投票都会被记录在区块 链上:  所谓去中心化应用(`DApp`:Dcentralized Application),就是一个不存在中心服务器 的应用。在网络中成百上千的电脑上,都可以运行该应用的副本,这使得它几乎不可能 出现宕机的情况。 基于区块链的投票是完全去中心化的,因此无须任何中心化机构的存在。 **第三节 开发迭代** 涵盖应用开发的整个过程,我们将通过三次迭代来渐进地引入区块链应用 开发所涉及的相关概念、语言和工具:  * Vanilla:在第一个迭代周期,我们不借助任何开发框架,而仅仅使用NodeJS来进行应用开发, 这有助于我们更好地理解区块链应用的核心理念。 * Truffle:在第二个迭代周期,我们将使用最流行的去中心化应用开发框架`Truffle`进行开发。 使用开发框架有助于我们提高开发效率。 * Token:在第三个迭代周期,我们将为投票应用引入代币(`Token`) —— 现在大家都改口 称之为通证了 —— 都是`ICO`惹的祸。代币是公链上不可或缺的激励机制,也是区块链 应用区别于传统的中心化应用的另一个显著特征。 为什么选择投票应用? 之所以选择投票作为我们的第一个区块链应用,是因为集体决策 —— 尤其是投票机制 —— 是以太坊的 一个核心的价值主张。 另一个原因在于,投票是很多复杂的去中心化应用的基础构件,所以我们选择了投票应用作为学习区块链 应用开发的第一个项目。 **第四节 初识区块链** 如果你熟悉关系型数据库,就应该知道一张数据表里可以包含很多行数据记录。例如,下面的数据表中 包含了6条交易记录:  本质上,区块链首先就是一个分布式(`Distributed`)数据库,这个数据库维护了一个不断增长的记录列表。 现在,让我们对数据进行批量(`batch`)存储,比如每批 100 行,并将各存储批次连接起来,是不是就像一条链?  在区块链里,多个数据记录组成的批次就被称为块(`block`),块里的每一行数据记录就被称为交易(`transaction`):  最开始的那个块,通常被称为创世块(`genesis block`),它不指向任何其他块。 **不可篡改性** 区块链的一个显著特点是,数据一旦写入链中,就不可篡改重写。 在传统的关系型数据库中,你可以很容易地更新一条数据记录。但是,在区块链中,一旦数据写入就无法 再更新了 —— 因此,区块链是一直增长的。 那么,区块链是如何实现数据的不可篡改特性? 这首先得益于哈希(`Hash`)函数 —— 如果你还没接触过哈希函数,不妨将它视为一个数字指纹的计算函数: 输入任意长度的内容,输出定长的码流(指纹)。哈希函数的一个重要特性就是,输入的任何一点微小变化,都会 导致输出的改变。因此可以将哈希值作为内容的指纹来使用。 你可以点击[这里](https://simple.wikipedia.org/wiki/Cryptographic_hash_function)进一步了解哈希函数。 由于区块链里的每个块都存储有前一个块内容的哈希值,因此如果有任何块的内容被篡改,被篡改的块之后 所有块的哈希值也会随之改变,这样我们就很容易检测出区块链的各块是否被篡改了。 **去中心化的挑战** 一旦完全去中心化,在网络上就会存在大量的区块链副本(即:全节点),很多事情都会变得比之前中心化 应用环境复杂的多,例如: * 如何保证所有副本都已同步到最新状态? * 如何保证所有交易都被广播到所有运行和维护区块链副本的节点计算机上? * 如何防止恶意参与者篡改区块链 * ...... 在接下来的课程中,通过与经典的C/S架构的对比,我们将逐步理解去中心化应用的核心思路, 并掌握如何构建以太坊上的去中心化应用。 **第五节 C/S架构以服务器为中心** 理解去中心化应用架构的最好方法,就是将它与熟悉的`Client/Server`架构进行对比。如果你是一个`web`开发者, 应该对下图很了解,这是一个典型的`Client/Server`架构:  一个典型web应用的服务端通常由 Java,Ruby,Python 等等语言实现。前端代码由 HTML/CSS/JavaScript 实现。 然后将整个应用托管在云端,比如 AWS、Google Cloud Platform、Heroku....,或者放在你租用的一个`VPS` 主机上。 用户通过客户端(`Client`)与 web 应用(`Server`)进行交互。典型的客户端包括浏览器、命令行工具(`curl`、`wget`等)、 或者是`API`访问代码。注意在这种架构中,总是存在一个(或一组)中心化的 web 服务器,所有的客户端都需要 与这一(组)服务器进行交互。当一个客户端向服务器发出请求时,服务器处理该请求,与数据库/缓存进行交互, 读/写/更新数据库,然后向客户端返回响应。 这是我们熟悉的中心化架构。在下一节,我们将会看到基于区块链的去中心化架构的一些显著区别。 **第六节 去中心化架构——彼此平等的节点** 下图给出了基于以太坊的去中心化应用架构:  你应该已经注意到,每个客户端(浏览器)都是与各自的节点应用实例进行交互,而不是向 一个中心化的服务器请求服务。 在一个理想的去中心化环境中,每个想要跟DApp交互的人,都需要在他们的计算机或手机上面运行 一个的完整区块链节点 —— 简言之,每个人都运行一个全节点。这意味着,在能够真正使用一个 去中心化应用之前,用户不得不下载整个区块链。 不过我们并非生活在一个乌托邦里,期待每个用户都先运行一个全节点,然后再使用你的应用是不现实的。 但是去中心化背后的核心思想,就是不依赖于中心化的服务器。所以,区块链社区已经出现了 一些解决方案,例如提供公共区块链节点的`Infura`, 以及浏览器插件`Metamask`等。通过这些方案, 你就不需要花费大量的硬盘、内存和时间去下载并运行完整的区块链节点,同时也可以利用去中心化 的优点。我们将会以后的课程中对这些解决方案分别进行评测。 **第七节 以太坊——世界计算机** 以太坊是一种区块链的实现。在以太坊网络中,众多的节点彼此连接,构成了以太坊网络:  以太坊节点软件提供两个核心功能:数据存储、合约代码执行。 在每个以太坊全节点中,都保存有完整的区块链数据。以太坊不仅将交易数据保存在链上,编译后 的合约代码同样也保存在链上。 以太坊全节点中,同时还提供了一个虚拟机来执行合约代码。 **交易数据** 以太坊中每笔交易都存储在区块链上。当你部署合约时,一次部署就是一笔交易。当你为候选者投票时,一次投票 又是另一笔交易。所有的这些交易都是公开的,每个人都可以看到并进行验证。这个数据永远也无法篡改。 为了确保网络中的所有节点都有着同一份数据拷贝,并且没有向数据库中写入任何无效数据,以太坊 目前使用[工作量证明](http://ethereum.stackexchange.com/questions/14/what-proof-of-work-function-does-ethereum-use) (`POW:Proof Of Work`)算法来保证网络安全,即通过矿工挖矿(`Mining`)来达成共识(`Consensus`)—— 将数据同步到所有节点。 工作量证明不是达成共识的唯一算法,挖矿也不是区块链的唯一选择。现在,我们只需要了解,共识是指各节点 的数据实现了一致,`POW`只是众多用于建立共识的算法中的一种,这种算法需要通过矿工的挖矿来实现非可信环境下的 可信交易。共识是目的,POW是手段。 **合约代码** 以太坊不仅仅在链上存储交易数据,它还可以在链上存储合约代码。 在数据库层面,区块链的作用就是存储交易数据。那么给候选者投票、或者检索投票结果的逻辑放在哪儿呢? 在以太坊的世界里,你可以使用`Solidity`语言来编写业务逻辑/应用代码(也就是合约:`Contract`), 然后将合约代码编译为以太坊字节码,并将字节码部署到区块链上:  编写合约代码也可以使用其他的语言,不过 `Solidity`是到目前为止最流行的选择。 **以太坊虚拟机** 以太坊区块链不仅存储数据和代码,每个节点中还包含一个虚拟机(EVM:Ethereum Virtual Machine)来执行 合约代码 —— 听起来就像计算机操作系统。 事实上,这一点是以太坊区别于比特币(`Bitcoin`)的最核心的一点:虚拟机的存在使区块链迈入了2.0 时代,也让区块链第一次成为应用开发者友好的平台。 **JS开发库** 为了便于构建基于web的DApp,以太坊还提供了一个非常方便的JavaScript库`web3.js`,它封装了以太坊节点的API 协议,从而让开发者可以轻松地连接到区块链节点而不必编写繁琐的`RPC`协议包。所以,我们可以在常用的JS框架 (比如 reactjs、angularjs 等)中直接引入该库来构建去中心化应用:  有兴趣可以继续: [http://xc.hubwiz.com/course/5a952991adb3847553d205d1](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180320steemit) |
| json metadata | {"tags":["ethereum","blockchain","dapp","solidity","truffle"],"image":["https://user-gold-cdn.xitu.io/2018/3/17/162332734ed72802?w=389&h=130&f=png&s=1490","https://user-gold-cdn.xitu.io/2018/3/17/162332734f70c7e9?w=604&h=380&f=png&s=6877","https://user-gold-cdn.xitu.io/2018/3/17/162332734f67da84?w=600&h=288&f=png&s=10179","https://user-gold-cdn.xitu.io/2018/3/17/162332734f489768?w=571&h=290&f=png&s=5551","https://user-gold-cdn.xitu.io/2018/3/17/162332734f526751?w=651&h=218&f=png&s=4165","https://user-gold-cdn.xitu.io/2018/3/17/162332734f633ea1?w=651&h=183&f=png&s=5044","https://user-gold-cdn.xitu.io/2018/3/17/162332736b082d47?w=602&h=442&f=png&s=28547","https://user-gold-cdn.xitu.io/2018/3/17/162332736b41ff3a?w=771&h=471&f=png&s=35378","https://user-gold-cdn.xitu.io/2018/3/17/162332736b1e0150?w=693&h=329&f=png&s=9671","https://user-gold-cdn.xitu.io/2018/3/17/162332736e01ad58?w=445&h=425&f=png&s=26905","https://user-gold-cdn.xitu.io/2018/3/17/1623327372d6754f?w=700&h=212&f=png&s=4045"],"links":["https://simple.wikipedia.org/wiki/Cryptographic_hash_function","http://ethereum.stackexchange.com/questions/14/what-proof-of-work-function-does-ethereum-use","http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180320steemit"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #20861443/Trx 3efbbe67dc5d72dea66f06383a480b7fd9eefb02 |
View Raw JSON Data
{
"trx_id": "3efbbe67dc5d72dea66f06383a480b7fd9eefb02",
"block": 20861443,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-21T05:50:21",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "dapp",
"title": "以太坊开发 之 DApp入门,如何使用智能合约搭建一个区块链投票系统。",
"body": "**第一节 概述**\n\n对于初学者,需要了解以太坊开发相关的基本概念,另外就是如何构建一个基于以太坊的完整去中心化应用例如一个区块链投票系统。\n\n\n\n通过学习,你将掌握:\n\n* 以太坊区块链的基本知识\n\n* 开发和部署以太坊合约所需的软件环境\n\n* 使用高级语言(`solidity`)编写以太坊合约\n\n* 使用NodeJS编译、部署合约并与之交互\n\n* 使用`Truffle`框架开发分布式应用\n\n* 使用控制台或网页与合约进行交互\n\n以太坊开发的前序知识要求\n\n为了顺利完成本课程,最好对以下技术已经有一些基本了解:\n\n* 一种面向对象的开发语言,例如:Python,Ruby,Java...\n\n* 前端开发语言:HTML/CSS/JavaScript\n\n* Linux命令行的使用\n\n* 数据库的基本概念\n\n**第二节 简介**\n\n我们将会构建一个去中心化的(`Decentralized`)投票应用。利用这个投票应用, 用户可以在不可信(`trustless`)的分布环境中对特定候选人投票,每次投票都会被记录在区块 链上:\n\n\n\n所谓去中心化应用(`DApp`:Dcentralized Application),就是一个不存在中心服务器 的应用。在网络中成百上千的电脑上,都可以运行该应用的副本,这使得它几乎不可能 出现宕机的情况。\n\n基于区块链的投票是完全去中心化的,因此无须任何中心化机构的存在。\n\n**第三节 开发迭代**\n\n涵盖应用开发的整个过程,我们将通过三次迭代来渐进地引入区块链应用 开发所涉及的相关概念、语言和工具:\n\n\n\n* Vanilla:在第一个迭代周期,我们不借助任何开发框架,而仅仅使用NodeJS来进行应用开发, 这有助于我们更好地理解区块链应用的核心理念。\n\n* Truffle:在第二个迭代周期,我们将使用最流行的去中心化应用开发框架`Truffle`进行开发。 使用开发框架有助于我们提高开发效率。\n\n* Token:在第三个迭代周期,我们将为投票应用引入代币(`Token`) —— 现在大家都改口 称之为通证了 —— 都是`ICO`惹的祸。代币是公链上不可或缺的激励机制,也是区块链 应用区别于传统的中心化应用的另一个显著特征。\n\n为什么选择投票应用?\n\n之所以选择投票作为我们的第一个区块链应用,是因为集体决策 —— 尤其是投票机制 —— 是以太坊的 一个核心的价值主张。\n\n另一个原因在于,投票是很多复杂的去中心化应用的基础构件,所以我们选择了投票应用作为学习区块链 应用开发的第一个项目。\n\n**第四节 初识区块链**\n\n如果你熟悉关系型数据库,就应该知道一张数据表里可以包含很多行数据记录。例如,下面的数据表中 包含了6条交易记录:\n\n\n\n本质上,区块链首先就是一个分布式(`Distributed`)数据库,这个数据库维护了一个不断增长的记录列表。 现在,让我们对数据进行批量(`batch`)存储,比如每批 100 行,并将各存储批次连接起来,是不是就像一条链?\n\n\n\n在区块链里,多个数据记录组成的批次就被称为块(`block`),块里的每一行数据记录就被称为交易(`transaction`):\n\n\n\n最开始的那个块,通常被称为创世块(`genesis block`),它不指向任何其他块。\n\n**不可篡改性**\n\n区块链的一个显著特点是,数据一旦写入链中,就不可篡改重写。\n\n在传统的关系型数据库中,你可以很容易地更新一条数据记录。但是,在区块链中,一旦数据写入就无法 再更新了 —— 因此,区块链是一直增长的。\n\n那么,区块链是如何实现数据的不可篡改特性?\n\n这首先得益于哈希(`Hash`)函数 —— 如果你还没接触过哈希函数,不妨将它视为一个数字指纹的计算函数: 输入任意长度的内容,输出定长的码流(指纹)。哈希函数的一个重要特性就是,输入的任何一点微小变化,都会 导致输出的改变。因此可以将哈希值作为内容的指纹来使用。 你可以点击[这里](https://simple.wikipedia.org/wiki/Cryptographic_hash_function)进一步了解哈希函数。\n\n由于区块链里的每个块都存储有前一个块内容的哈希值,因此如果有任何块的内容被篡改,被篡改的块之后 所有块的哈希值也会随之改变,这样我们就很容易检测出区块链的各块是否被篡改了。\n\n**去中心化的挑战**\n\n一旦完全去中心化,在网络上就会存在大量的区块链副本(即:全节点),很多事情都会变得比之前中心化 应用环境复杂的多,例如:\n\n* 如何保证所有副本都已同步到最新状态?\n\n* 如何保证所有交易都被广播到所有运行和维护区块链副本的节点计算机上?\n\n* 如何防止恶意参与者篡改区块链\n\n* ......\n\n在接下来的课程中,通过与经典的C/S架构的对比,我们将逐步理解去中心化应用的核心思路, 并掌握如何构建以太坊上的去中心化应用。\n\n**第五节 C/S架构以服务器为中心**\n\n理解去中心化应用架构的最好方法,就是将它与熟悉的`Client/Server`架构进行对比。如果你是一个`web`开发者, 应该对下图很了解,这是一个典型的`Client/Server`架构:\n\n\n\n一个典型web应用的服务端通常由 Java,Ruby,Python 等等语言实现。前端代码由 HTML/CSS/JavaScript 实现。 然后将整个应用托管在云端,比如 AWS、Google Cloud Platform、Heroku....,或者放在你租用的一个`VPS` 主机上。\n\n用户通过客户端(`Client`)与 web 应用(`Server`)进行交互。典型的客户端包括浏览器、命令行工具(`curl`、`wget`等)、 或者是`API`访问代码。注意在这种架构中,总是存在一个(或一组)中心化的 web 服务器,所有的客户端都需要 与这一(组)服务器进行交互。当一个客户端向服务器发出请求时,服务器处理该请求,与数据库/缓存进行交互, 读/写/更新数据库,然后向客户端返回响应。\n\n这是我们熟悉的中心化架构。在下一节,我们将会看到基于区块链的去中心化架构的一些显著区别。\n\n**第六节 去中心化架构——彼此平等的节点** \n\n下图给出了基于以太坊的去中心化应用架构:\n\n\n\n你应该已经注意到,每个客户端(浏览器)都是与各自的节点应用实例进行交互,而不是向 一个中心化的服务器请求服务。\n\n在一个理想的去中心化环境中,每个想要跟DApp交互的人,都需要在他们的计算机或手机上面运行 一个的完整区块链节点 —— 简言之,每个人都运行一个全节点。这意味着,在能够真正使用一个 去中心化应用之前,用户不得不下载整个区块链。\n\n不过我们并非生活在一个乌托邦里,期待每个用户都先运行一个全节点,然后再使用你的应用是不现实的。 但是去中心化背后的核心思想,就是不依赖于中心化的服务器。所以,区块链社区已经出现了 一些解决方案,例如提供公共区块链节点的`Infura`, 以及浏览器插件`Metamask`等。通过这些方案, 你就不需要花费大量的硬盘、内存和时间去下载并运行完整的区块链节点,同时也可以利用去中心化 的优点。我们将会以后的课程中对这些解决方案分别进行评测。\n\n**第七节 以太坊——世界计算机**\n\n以太坊是一种区块链的实现。在以太坊网络中,众多的节点彼此连接,构成了以太坊网络:\n\n\n\n以太坊节点软件提供两个核心功能:数据存储、合约代码执行。\n\n在每个以太坊全节点中,都保存有完整的区块链数据。以太坊不仅将交易数据保存在链上,编译后 的合约代码同样也保存在链上。\n\n以太坊全节点中,同时还提供了一个虚拟机来执行合约代码。\n\n**交易数据**\n\n以太坊中每笔交易都存储在区块链上。当你部署合约时,一次部署就是一笔交易。当你为候选者投票时,一次投票 又是另一笔交易。所有的这些交易都是公开的,每个人都可以看到并进行验证。这个数据永远也无法篡改。\n\n为了确保网络中的所有节点都有着同一份数据拷贝,并且没有向数据库中写入任何无效数据,以太坊 目前使用[工作量证明](http://ethereum.stackexchange.com/questions/14/what-proof-of-work-function-does-ethereum-use) (`POW:Proof Of Work`)算法来保证网络安全,即通过矿工挖矿(`Mining`)来达成共识(`Consensus`)—— 将数据同步到所有节点。\n\n工作量证明不是达成共识的唯一算法,挖矿也不是区块链的唯一选择。现在,我们只需要了解,共识是指各节点 的数据实现了一致,`POW`只是众多用于建立共识的算法中的一种,这种算法需要通过矿工的挖矿来实现非可信环境下的 可信交易。共识是目的,POW是手段。\n\n**合约代码**\n\n以太坊不仅仅在链上存储交易数据,它还可以在链上存储合约代码。\n\n在数据库层面,区块链的作用就是存储交易数据。那么给候选者投票、或者检索投票结果的逻辑放在哪儿呢? 在以太坊的世界里,你可以使用`Solidity`语言来编写业务逻辑/应用代码(也就是合约:`Contract`), 然后将合约代码编译为以太坊字节码,并将字节码部署到区块链上:\n\n\n\n编写合约代码也可以使用其他的语言,不过 `Solidity`是到目前为止最流行的选择。\n\n**以太坊虚拟机**\n\n以太坊区块链不仅存储数据和代码,每个节点中还包含一个虚拟机(EVM:Ethereum Virtual Machine)来执行 合约代码 —— 听起来就像计算机操作系统。\n\n事实上,这一点是以太坊区别于比特币(`Bitcoin`)的最核心的一点:虚拟机的存在使区块链迈入了2.0 时代,也让区块链第一次成为应用开发者友好的平台。\n\n**JS开发库**\n\n为了便于构建基于web的DApp,以太坊还提供了一个非常方便的JavaScript库`web3.js`,它封装了以太坊节点的API 协议,从而让开发者可以轻松地连接到区块链节点而不必编写繁琐的`RPC`协议包。所以,我们可以在常用的JS框架 (比如 reactjs、angularjs 等)中直接引入该库来构建去中心化应用:\n\n\n\n有兴趣可以继续:\n[http://xc.hubwiz.com/course/5a952991adb3847553d205d1](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180320steemit)",
"json_metadata": "{\"tags\":[\"ethereum\",\"blockchain\",\"dapp\",\"solidity\",\"truffle\"],\"image\":[\"https://user-gold-cdn.xitu.io/2018/3/17/162332734ed72802?w=389&h=130&f=png&s=1490\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332734f70c7e9?w=604&h=380&f=png&s=6877\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332734f67da84?w=600&h=288&f=png&s=10179\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332734f489768?w=571&h=290&f=png&s=5551\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332734f526751?w=651&h=218&f=png&s=4165\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332734f633ea1?w=651&h=183&f=png&s=5044\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332736b082d47?w=602&h=442&f=png&s=28547\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332736b41ff3a?w=771&h=471&f=png&s=35378\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332736b1e0150?w=693&h=329&f=png&s=9671\",\"https://user-gold-cdn.xitu.io/2018/3/17/162332736e01ad58?w=445&h=425&f=png&s=26905\",\"https://user-gold-cdn.xitu.io/2018/3/17/1623327372d6754f?w=700&h=212&f=png&s=4045\"],\"links\":[\"https://simple.wikipedia.org/wiki/Cryptographic_hash_function\",\"http://ethereum.stackexchange.com/questions/14/what-proof-of-work-function-does-ethereum-use\",\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180320steemit\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/03/18 03:28:27
2018/03/18 03:28:27
| parent author | peterchen145 |
| parent permlink | eos-vs |
| author | jimi2018 |
| permlink | re-peterchen145-eos-vs-20180318t033037165z |
| title | |
| body | 推荐一个适合区块链新手的以太坊DApp开发教程:http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180318steemit |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180318steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #20772260/Trx e8422d79bb6ea4f407ba61c44d44489e8eda55ed |
View Raw JSON Data
{
"trx_id": "e8422d79bb6ea4f407ba61c44d44489e8eda55ed",
"block": 20772260,
"trx_in_block": 35,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-18T03:28:27",
"op": [
"comment",
{
"parent_author": "peterchen145",
"parent_permlink": "eos-vs",
"author": "jimi2018",
"permlink": "re-peterchen145-eos-vs-20180318t033037165z",
"title": "",
"body": "推荐一个适合区块链新手的以太坊DApp开发教程:http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180318steemit",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180318steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/03/18 00:31:51
2018/03/18 00:31:51
| voter | labapshas |
| author | jimi2018 |
| permlink | x8gdm |
| weight | 10000 (100.00%) |
| Transaction Info | Block #20768730/Trx 36ea7b7b62935d48d976bcd486b523901996d1ba |
View Raw JSON Data
{
"trx_id": "36ea7b7b62935d48d976bcd486b523901996d1ba",
"block": 20768730,
"trx_in_block": 42,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-18T00:31:51",
"op": [
"vote",
{
"voter": "labapshas",
"author": "jimi2018",
"permlink": "x8gdm",
"weight": 10000
}
]
}wayfreeldapasupvoted (100.00%) @jimi2018 / x8gdm2018/03/18 00:31:39
wayfreeldapasupvoted (100.00%) @jimi2018 / x8gdm
2018/03/18 00:31:39
| voter | wayfreeldapas |
| author | jimi2018 |
| permlink | x8gdm |
| weight | 10000 (100.00%) |
| Transaction Info | Block #20768726/Trx cf0efefd13be0a689bd630034eeed999864d5341 |
View Raw JSON Data
{
"trx_id": "cf0efefd13be0a689bd630034eeed999864d5341",
"block": 20768726,
"trx_in_block": 49,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-18T00:31:39",
"op": [
"vote",
{
"voter": "wayfreeldapas",
"author": "jimi2018",
"permlink": "x8gdm",
"weight": 10000
}
]
}2018/03/17 13:59:48
2018/03/17 13:59:48
| parent author | |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | x8gdm |
| title | 适合区块链编程新手的以太坊开发教程 |
| body | [http://xc.hubwiz.com/course/5a952991adb3847553d205d1](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit) |
| json metadata | {"tags":["ethereum","blockchain","dapp","solidity","truffle"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #20756095/Trx 7189fccbaf3d26dd88c6e54e8d93b34d030f654c |
View Raw JSON Data
{
"trx_id": "7189fccbaf3d26dd88c6e54e8d93b34d030f654c",
"block": 20756095,
"trx_in_block": 26,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-17T13:59:48",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "x8gdm",
"title": "适合区块链编程新手的以太坊开发教程",
"body": "[http://xc.hubwiz.com/course/5a952991adb3847553d205d1](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit)",
"json_metadata": "{\"tags\":[\"ethereum\",\"blockchain\",\"dapp\",\"solidity\",\"truffle\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/03/17 13:59:24
2018/03/17 13:59:24
| parent author | |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | x8gdm |
| title | 适合区块链编程新手的以太坊开发教程 |
| body | @@ -18,9 +18,8 @@ %E5%8F%91%E6%95%99%E7%A8%8B%EF%BC%9A -%0A %5Bhtt |
| json metadata | {"tags":["ethereum","blockchain","dapp","solidity","truffle"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #20756087/Trx 9d961059d71c72a20ff5633a2a683845d5ad9618 |
View Raw JSON Data
{
"trx_id": "9d961059d71c72a20ff5633a2a683845d5ad9618",
"block": 20756087,
"trx_in_block": 47,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-17T13:59:24",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "x8gdm",
"title": "适合区块链编程新手的以太坊开发教程",
"body": "@@ -18,9 +18,8 @@\n %E5%8F%91%E6%95%99%E7%A8%8B%EF%BC%9A\n-%0A\n %5Bhtt\n",
"json_metadata": "{\"tags\":[\"ethereum\",\"blockchain\",\"dapp\",\"solidity\",\"truffle\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/03/17 13:59:00
2018/03/17 13:59:00
| parent author | |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | x8gdm |
| title | 适合区块链编程新手的以太坊开发教程 |
| body | 推荐一个适合新手的以太坊DApp开发教程: [http://xc.hubwiz.com/course/5a952991adb3847553d205d1](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit) |
| json metadata | {"tags":["ethereum","blockchain","dapp","solidity","truffle"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #20756079/Trx ccbaf4d265d4a504041d0034f6ce25a2e623fd31 |
View Raw JSON Data
{
"trx_id": "ccbaf4d265d4a504041d0034f6ce25a2e623fd31",
"block": 20756079,
"trx_in_block": 39,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-17T13:59:00",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "x8gdm",
"title": "适合区块链编程新手的以太坊开发教程",
"body": "推荐一个适合新手的以太坊DApp开发教程:\n[http://xc.hubwiz.com/course/5a952991adb3847553d205d1](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit)",
"json_metadata": "{\"tags\":[\"ethereum\",\"blockchain\",\"dapp\",\"solidity\",\"truffle\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}jimi2018replied to @fblife / re-fblife-dapp-20180317t135722140z2018/03/17 13:55:15
jimi2018replied to @fblife / re-fblife-dapp-20180317t135722140z
2018/03/17 13:55:15
| parent author | fblife |
| parent permlink | dapp |
| author | jimi2018 |
| permlink | re-fblife-dapp-20180317t135722140z |
| title | |
| body | 推荐一个适合新手的以太坊开发DApp教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit |
| json metadata | {"tags":["cn"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit"],"app":"steemit/0.1"} |
| Transaction Info | Block #20756004/Trx 9af0934a6f74ee2cb4448ad812f4354feabafb45 |
View Raw JSON Data
{
"trx_id": "9af0934a6f74ee2cb4448ad812f4354feabafb45",
"block": 20756004,
"trx_in_block": 11,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-17T13:55:15",
"op": [
"comment",
{
"parent_author": "fblife",
"parent_permlink": "dapp",
"author": "jimi2018",
"permlink": "re-fblife-dapp-20180317t135722140z",
"title": "",
"body": "推荐一个适合新手的以太坊开发DApp教程:\nhttp://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit",
"json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180317steemit\"],\"app\":\"steemit/0.1\"}"
}
]
}jimi2018removed vote from (0.00%) @jimi2018 / ethereum-dapp-blockchain2018/03/13 13:14:06
jimi2018removed vote from (0.00%) @jimi2018 / ethereum-dapp-blockchain
2018/03/13 13:14:06
| voter | jimi2018 |
| author | jimi2018 |
| permlink | ethereum-dapp-blockchain |
| weight | 0 (0.00%) |
| Transaction Info | Block #20640107/Trx fbb5000ab646e2b677b11ff983327db79748e867 |
View Raw JSON Data
{
"trx_id": "fbb5000ab646e2b677b11ff983327db79748e867",
"block": 20640107,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-13T13:14:06",
"op": [
"vote",
{
"voter": "jimi2018",
"author": "jimi2018",
"permlink": "ethereum-dapp-blockchain",
"weight": 0
}
]
}jimi2018upvoted (100.00%) @jimi2018 / ethereum-dapp-blockchain2018/03/13 13:13:45
jimi2018upvoted (100.00%) @jimi2018 / ethereum-dapp-blockchain
2018/03/13 13:13:45
| voter | jimi2018 |
| author | jimi2018 |
| permlink | ethereum-dapp-blockchain |
| weight | 10000 (100.00%) |
| Transaction Info | Block #20640100/Trx 35cd057604d73ab5f7f0f42f3528d0e74888789a |
View Raw JSON Data
{
"trx_id": "35cd057604d73ab5f7f0f42f3528d0e74888789a",
"block": 20640100,
"trx_in_block": 42,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-13T13:13:45",
"op": [
"vote",
{
"voter": "jimi2018",
"author": "jimi2018",
"permlink": "ethereum-dapp-blockchain",
"weight": 10000
}
]
}jimi2018published a new post: ethereum-dapp-blockchain2018/03/13 13:13:18
jimi2018published a new post: ethereum-dapp-blockchain
2018/03/13 13:13:18
| parent author | |
| parent permlink | ethereum |
| author | jimi2018 |
| permlink | ethereum-dapp-blockchain |
| title | 推荐一个以太坊(Ethereum)DApp开发入门教程——区块链(blockchain)投票系统 |
| body | 推荐一个以太坊Dapp开发的入门教程给大家,以太坊占目前区块链开发的80%: http://xc.hubwiz.com/course/5a952991adb3847553d205d1 |
| json metadata | {"tags":["ethereum","blockchain"],"links":["http://xc.hubwiz.com/course/5a952991adb3847553d205d1"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #20640091/Trx d2657297b0324093afc7f73d8ee66c9261a883c4 |
View Raw JSON Data
{
"trx_id": "d2657297b0324093afc7f73d8ee66c9261a883c4",
"block": 20640091,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-13T13:13:18",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "ethereum",
"author": "jimi2018",
"permlink": "ethereum-dapp-blockchain",
"title": "推荐一个以太坊(Ethereum)DApp开发入门教程——区块链(blockchain)投票系统",
"body": "推荐一个以太坊Dapp开发的入门教程给大家,以太坊占目前区块链开发的80%:\n\nhttp://xc.hubwiz.com/course/5a952991adb3847553d205d1",
"json_metadata": "{\"tags\":[\"ethereum\",\"blockchain\"],\"links\":[\"http://xc.hubwiz.com/course/5a952991adb3847553d205d1\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2018/03/12 14:57:21
2018/03/12 14:57:21
| delegator | steem |
| delegatee | jimi2018 |
| vesting shares | 30422.737659 VESTS |
| Transaction Info | Block #20613386/Trx ba79fa6b1854da2d435eb05eff6abddbefcf5ce4 |
View Raw JSON Data
{
"trx_id": "ba79fa6b1854da2d435eb05eff6abddbefcf5ce4",
"block": 20613386,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-12T14:57:21",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "jimi2018",
"vesting_shares": "30422.737659 VESTS"
}
]
}2018/03/12 11:46:42
2018/03/12 11:46:42
| fee | 0.100 STEEM |
| delegation | 30690.000000 VESTS |
| creator | steem |
| new account name | jimi2018 |
| owner | {"weight_threshold":1,"account_auths":[],"key_auths":[["STM5TgPEPhn2wfq4PdNnWQ5juSq2FSqJQmH6gtzRqqeSoxhzSiLbd",1]]} |
| active | {"weight_threshold":1,"account_auths":[],"key_auths":[["STM7qCa9e5C9iHxxrFKUaroEqrTC63jXc94TJMERBv2tUCPRbu8vz",1]]} |
| posting | {"weight_threshold":1,"account_auths":[],"key_auths":[["STM8CMUS6BkCFCW1t2bVnezFST7jy6pY9954GjXqnLtUCvDQiU6YP",1]]} |
| memo key | STM65HjC5nE976BFbk7R9pFFqQHn93GXkF9gtdxsExvWMadTimAMb |
| json metadata | {} |
| extensions | [] |
| Transaction Info | Block #20609578/Trx b93f53dbe655f69c2786f64bc5c08b93152f980a |
View Raw JSON Data
{
"trx_id": "b93f53dbe655f69c2786f64bc5c08b93152f980a",
"block": 20609578,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-03-12T11:46:42",
"op": [
"account_create_with_delegation",
{
"fee": "0.100 STEEM",
"delegation": "30690.000000 VESTS",
"creator": "steem",
"new_account_name": "jimi2018",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5TgPEPhn2wfq4PdNnWQ5juSq2FSqJQmH6gtzRqqeSoxhzSiLbd",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7qCa9e5C9iHxxrFKUaroEqrTC63jXc94TJMERBv2tUCPRbu8vz",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8CMUS6BkCFCW1t2bVnezFST7jy6pY9954GjXqnLtUCvDQiU6YP",
1
]
]
},
"memo_key": "STM65HjC5nE976BFbk7R9pFFqQHn93GXkF9gtdxsExvWMadTimAMb",
"json_metadata": "{}",
"extensions": []
}
]
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress0.00%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779069240
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779069240
},
"rc_account": {
"account": "jimi2018",
"rc_manabar": {
"current_mana": "10164408779",
"last_update_time": 1779069240
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "10164408779"
}
}Account Metadata
| POSTING JSON METADATA | |
| None | |
| JSON METADATA | |
| None |
{
"posting_json_metadata": {},
"json_metadata": {}
}Auth Keys
Owner
Single Signature
Public Keys
STM5TgPEPhn2wfq4PdNnWQ5juSq2FSqJQmH6gtzRqqeSoxhzSiLbd1/1
Active
Single Signature
Public Keys
STM7qCa9e5C9iHxxrFKUaroEqrTC63jXc94TJMERBv2tUCPRbu8vz1/1
Posting
Single Signature
Public Keys
STM8CMUS6BkCFCW1t2bVnezFST7jy6pY9954GjXqnLtUCvDQiU6YP1/1
Memo
STM65HjC5nE976BFbk7R9pFFqQHn93GXkF9gtdxsExvWMadTimAMb
{
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM5TgPEPhn2wfq4PdNnWQ5juSq2FSqJQmH6gtzRqqeSoxhzSiLbd",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7qCa9e5C9iHxxrFKUaroEqrTC63jXc94TJMERBv2tUCPRbu8vz",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8CMUS6BkCFCW1t2bVnezFST7jy6pY9954GjXqnLtUCvDQiU6YP",
1
]
]
},
"memo": "STM65HjC5nE976BFbk7R9pFFqQHn93GXkF9gtdxsExvWMadTimAMb"
}Witness Votes
0 / 30
No active witness votes.
[]