Ecoer Logo
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS78.03%
Net Worth
3.190USD
STEEM
0.001STEEM
SBD
1.149SBD
Own SP
45.486SP

Detailed Balance

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

Account Info

nameheha37
id139034
rank43,474
reputation3397389988
created2017-03-18T00:43:00
recovery_accountsteem
proxyNone
post_count14
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2017-10-19T03:32:27
last_root_post2017-10-19T03:12:15
last_vote_time2018-05-08T09:03:33
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power9,800
delayed_votes0
balance0.001 STEEM
savings_balance0.000 STEEM
sbd_balance1.149 SBD
savings_sbd_balance0.000 SBD
vesting_shares73980.050051 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares0.000000 VESTS
reward_vesting_balance0.000000 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update2017-10-17T03:34:21
last_account_update2017-10-19T03:23:03
minedNo
sbd_seconds0
sbd_last_interest_payment2017-11-27T06:52:57
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5wgyLj55Ldcn1x7FqPmfeR1tJUzg6WEjCcpTE7n67m8HnrQzoE",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.001 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2017-03-18T00:43:00",
  "curation_rewards": 0,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 0,
    "last_update_time": 1489797780
  },
  "guest_bloggers": [],
  "id": 139034,
  "json_metadata": "{\"profile\":{\"name\":\"heha3737\",\"profile_image\":\"https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2017-10-19T03:23:03",
  "last_owner_update": "2017-10-17T03:34:21",
  "last_post": "2017-10-19T03:32:27",
  "last_root_post": "2017-10-19T03:12:15",
  "last_vote_time": "2018-05-08T09:03:33",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG",
  "mined": false,
  "name": "heha37",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM59uk43E3VyJ2NuebNRh6As8SvxBDqEHj2pTD9xGYszVb6E83zn",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 14,
  "post_history": [],
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8QNX8cccFMra8pAQCPQSjKjZeDtjZXbbKTr8EJNsjvvKgEBfsu",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"name\":\"heha3737\",\"profile_image\":\"https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg\"}}",
  "posting_rewards": 1131,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "0.000000 VESTS",
  "recovery_account": "steem",
  "reputation": 3397389988,
  "reset_account": "null",
  "reward_sbd_balance": "0.000 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "0.000000 VESTS",
  "reward_vesting_steem": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "sbd_balance": "1.149 SBD",
  "sbd_last_interest_payment": "2017-11-27T06:52:57",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2017-11-27T06:52:57",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "73980.050051 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": 9800,
    "last_update_time": 1525770213
  },
  "voting_power": 9800,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 43474
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
2019/03/18 02:08:12
authorsteemitboard
bodyCongratulations @heha37! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@heha37/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@heha37) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=heha37)_</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"]}
parent authorheha37
parent permlink6pgo9m-python
permlinksteemitboard-notify-heha37-20190318t020811000z
title
Transaction InfoBlock #31248666/Trx cd4707adcdf0f7943d7d04bea9af623995807b27
View Raw JSON Data
{
  "block": 31248666,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @heha37! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@heha37/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@heha37) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=heha37)_</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\"]}",
      "parent_author": "heha37",
      "parent_permlink": "6pgo9m-python",
      "permlink": "steemitboard-notify-heha37-20190318t020811000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-03-18T02:08:12",
  "trx_id": "cd4707adcdf0f7943d7d04bea9af623995807b27",
  "trx_in_block": 13,
  "virtual_op": 0
}
heha37upvoted (100.00%) @oflyhigh / vector-cny
2018/05/08 09:03:33
authoroflyhigh
permlinkvector-cny
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #22246000/Trx 66d65fc41c73655f0c28f04e424acb1274f2d90c
View Raw JSON Data
{
  "block": 22246000,
  "op": [
    "vote",
    {
      "author": "oflyhigh",
      "permlink": "vector-cny",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-05-08T09:03:33",
  "trx_id": "66d65fc41c73655f0c28f04e424acb1274f2d90c",
  "trx_in_block": 6,
  "virtual_op": 0
}
heha37upvoted (100.00%) @oflyhigh / 46cawn-steem
2018/04/08 06:52:33
authoroflyhigh
permlink46cawn-steem
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #21380199/Trx 1ea63783f527de9b65124b85b04dcb63df1d8c92
View Raw JSON Data
{
  "block": 21380199,
  "op": [
    "vote",
    {
      "author": "oflyhigh",
      "permlink": "46cawn-steem",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-04-08T06:52:33",
  "trx_id": "1ea63783f527de9b65124b85b04dcb63df1d8c92",
  "trx_in_block": 30,
  "virtual_op": 0
}
heha37followed @mreko
2018/01/02 05:18:48
idfollow
json["follow",{"follower":"heha37","following":"mreko","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #18616529/Trx c208148fba49c950504da5a28766193cb936c1d0
View Raw JSON Data
{
  "block": 18616529,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"mreko\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-02T05:18:48",
  "trx_id": "c208148fba49c950504da5a28766193cb936c1d0",
  "trx_in_block": 33,
  "virtual_op": 0
}
2017/12/11 08:29:00
authordhiki
permlinkhave-a-nice-day-20171211t75212868z
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #17987179/Trx c3190a945aa291347d3dba7d3982b4bacd17daff
View Raw JSON Data
{
  "block": 17987179,
  "op": [
    "vote",
    {
      "author": "dhiki",
      "permlink": "have-a-nice-day-20171211t75212868z",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-12-11T08:29:00",
  "trx_id": "c3190a945aa291347d3dba7d3982b4bacd17daff",
  "trx_in_block": 13,
  "virtual_op": 0
}
heha37claimed reward balance: 0.015 SBD, 0.020 SP
2017/11/27 06:52:57
accountheha37
reward sbd0.015 SBD
reward steem0.000 STEEM
reward vests32.898387 VESTS
Transaction InfoBlock #17582273/Trx a11c6ddcfcd3a58ba4cc578d356cdc2b576d6bb3
View Raw JSON Data
{
  "block": 17582273,
  "op": [
    "claim_reward_balance",
    {
      "account": "heha37",
      "reward_sbd": "0.015 SBD",
      "reward_steem": "0.000 STEEM",
      "reward_vests": "32.898387 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-27T06:52:57",
  "trx_id": "a11c6ddcfcd3a58ba4cc578d356cdc2b576d6bb3",
  "trx_in_block": 11,
  "virtual_op": 0
}
heha37received 0.015 SBD, 0.020 SP author reward for @heha37 / 6pgo9m-python
2017/10/26 03:12:15
authorheha37
permlink6pgo9m-python
sbd payout0.015 SBD
steem payout0.000 STEEM
vesting payout32.898387 VESTS
Transaction InfoBlock #16656690/Virtual Operation #5
View Raw JSON Data
{
  "block": 16656690,
  "op": [
    "author_reward",
    {
      "author": "heha37",
      "permlink": "6pgo9m-python",
      "sbd_payout": "0.015 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "32.898387 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-26T03:12:15",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 5
}
2017/10/24 07:00:33
idfollow
json["follow",{"follower":"heha37","following":"tracemayer","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #16603670/Trx 0a6d1a1b34d7eb96f25da4b68c4ce33577ecc9e2
View Raw JSON Data
{
  "block": 16603670,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"tracemayer\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-24T07:00:33",
  "trx_id": "0a6d1a1b34d7eb96f25da4b68c4ce33577ecc9e2",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/10/19 03:57:15
authorheha37
permlink6pgo9m-python
voternepalipahad
weight3500 (35.00%)
Transaction InfoBlock #16456086/Trx f16b9e45b86312c11a2862f5133a4fcb6359ce30
View Raw JSON Data
{
  "block": 16456086,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "6pgo9m-python",
      "voter": "nepalipahad",
      "weight": 3500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:57:15",
  "trx_id": "f16b9e45b86312c11a2862f5133a4fcb6359ce30",
  "trx_in_block": 0,
  "virtual_op": 0
}
tvbupvoted (25.00%) @heha37 / 6pgo9m-python
2017/10/19 03:40:36
authorheha37
permlink6pgo9m-python
votertvb
weight2500 (25.00%)
Transaction InfoBlock #16455753/Trx 770b03ad095ee7e368e1b16e0108091c20249a21
View Raw JSON Data
{
  "block": 16455753,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "6pgo9m-python",
      "voter": "tvb",
      "weight": 2500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:40:36",
  "trx_id": "770b03ad095ee7e368e1b16e0108091c20249a21",
  "trx_in_block": 20,
  "virtual_op": 0
}
daydayupupvoted (100.00%) @heha37 / 6pgo9m-python
2017/10/19 03:39:21
authorheha37
permlink6pgo9m-python
voterdaydayup
weight10000 (100.00%)
Transaction InfoBlock #16455728/Trx 4fda106addbab1d273de35c830d2e406da857352
View Raw JSON Data
{
  "block": 16455728,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "6pgo9m-python",
      "voter": "daydayup",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:39:21",
  "trx_id": "4fda106addbab1d273de35c830d2e406da857352",
  "trx_in_block": 13,
  "virtual_op": 0
}
2017/10/19 03:32:27
authorheha37
bodynice
json metadata{"tags":["cn"],"app":"steemit/0.1"}
parent authoroflyhigh
parent permlinklet-s-play-the-internal-market
permlinkre-oflyhigh-let-s-play-the-internal-market-20171019t033226773z
title
Transaction InfoBlock #16455590/Trx 13c21a78937fdc0fcd049b211a06b784019da3a3
View Raw JSON Data
{
  "block": 16455590,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "nice",
      "json_metadata": "{\"tags\":[\"cn\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "oflyhigh",
      "parent_permlink": "let-s-play-the-internal-market",
      "permlink": "re-oflyhigh-let-s-play-the-internal-market-20171019t033226773z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:32:27",
  "trx_id": "13c21a78937fdc0fcd049b211a06b784019da3a3",
  "trx_in_block": 23,
  "virtual_op": 0
}
2017/10/19 03:29:39
idfollow
json["follow",{"follower":"heha37","following":"steemitboard","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #16455534/Trx 30c06be5ac8122581098eb6ae6e87a6c00c50288
View Raw JSON Data
{
  "block": 16455534,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"steemitboard\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:29:39",
  "trx_id": "30c06be5ac8122581098eb6ae6e87a6c00c50288",
  "trx_in_block": 9,
  "virtual_op": 0
}
heha37published a new post: 6pgo9m-python
2017/10/19 03:28:00
authorheha37
body### 简介 说到区块链,大家不免会想到比特币、加密货币、智能合约、交易、支付,但是这些都是区块链解决的问题,不是其本身,并且这些把理解区块链变得复杂,下面配合Python代码理解区块链结构。 先总结一下区块链的定义,区块链本质上是一个能够保证系统诚实可信的分布式数据库,是由多种技术整合而成,该数据库由使用密码学技术产生的数据区块有序链接而成,每个区块包含一定时间内产生的不可篡改信息。 下面使用Python语言一步步打造一个简单的区块链原型。 ### 区块结构 学习区块链,就要先从区块的结构开始说起,因为价值信息就存在区块中,比如比特币的区块存储的是交易记录。除此以外,区块还含有一些技术信息,来维持区块的结构,抽取其中最关键的5个技术信息,分别是下标(Index),时间戳(Timestamp),前一个区块的哈希值(Previous Hash)和当前区块的哈希值(Current Hash),下面用类来封装这些信息,Python代码如下: ```python import hashlib class Block(object): def __init__(self, index, data, prev_hash, timestamp): self.index = index self.data = data self.prev_hash = prev_hash self.timestamp = timestamp self.cur_hash = self.do_hash(index, data, prev_hash, timestamp) def do_hash(self, *args): sha256 = hashlib.sha256() for arg in args: sha256.update(str(arg).encode('utf-8')) return sha256.hexdigest() ``` index、timestamp、prev_hash和cur_hash这四个技术信息构成了区块的头部数据,这是一个独立的数据结构;data参数储存价值信息,比如交易记录,也是一个单独的数据结构,但是在这里为了使其简单、便于理解,就混合在一个结构中。 上面代码的do_hash方法,是用来对区块进行哈希加密的,跟「挖矿」无关,没有解决工作量证明(POW)的问题,计算哈希是区块链中的重要环节。这里把区块里的字段数据关联起来后,使用SHA256算法进行哈希计算,得出当前哈希值cur_hash。 ### 区块链结构 区块链本质上就是一个拥有特定结构的数据库,是一个有序且反向链接的列表,在这个列表里,区块按照插入的顺序排列,通过prev_hash这个字段找到上一个区块的哈希值,把每一个区块都链接到上一个区块上,如下图所示: ![block_structure.jpg](https://shootertt.github.io/uploads/block_structure.jpg) 下面我创建了一个Manager类,用来封装区块链的一些操作,达到维护区块链结构的目的: ```python import datetime class Manager(object): """Blockchain manager""" blockchain = [] def __init__(self): self.origin_index = 0 self.origin_prev_hash = '0' self.origin_data = 'origin block' self.origin_timestamp = datetime.datetime(2016, 4, 1, 0, 0).timestamp() Manager.blockchain.append(self.get_origin_block()) ``` 比特币使用LevelDB来存储区块链,为了简化,在上面代码上使用Python的列表(List)把区块链直接存储在内存中。刚刚初始化的时候区块链中没有区块,为了能够不断添加新的区块,我们需要区块链中至少有一个区块,这第一个区块被称为「创始块(Genesis Block)」,下面给出创建「创始块」的方法: ```python class Manager(object): ... def get_origin_block(self): return Block(self.origin_index, self.origin_data, self.origin_prev_hash, self.origin_timestamp) ... ``` 有了「创始块」之后,就可以根据当前最新的区块生成下一个区块,代码如下: ```python class Manager(object): ... def get_latest_block(self): return Manager.blockchain[-1] def generate_next_block(self, new_data): prev_block = self.get_latest_block() next_index = prev_block.index + 1 next_timestamp = datetime.datetime.now().timestamp() return Block(next_index, new_data, prev_block.cur_hash, next_timestamp) ... ``` ### 结论 以上创建了一个简单的区块链原型,只是一个区块列表,真正的区块链在添加区块的时候需要经历大量的计算,这个过程就是传说中的「工作量证明」(POW,Proof-Of-Work),并且还需要全网「共识机制」的认可。
json metadata{"tags":["cn","python","blockchain"],"image":["https://shootertt.github.io/uploads/block_structure.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkpython
permlink6pgo9m-python
title块说链语:用Python撸一串区块链
Transaction InfoBlock #16455501/Trx b16539928987a3cd5a03214c0d6d0a431330d8f2
View Raw JSON Data
{
  "block": 16455501,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "### 简介\n\n说到区块链,大家不免会想到比特币、加密货币、智能合约、交易、支付,但是这些都是区块链解决的问题,不是其本身,并且这些把理解区块链变得复杂,下面配合Python代码理解区块链结构。\n\n先总结一下区块链的定义,区块链本质上是一个能够保证系统诚实可信的分布式数据库,是由多种技术整合而成,该数据库由使用密码学技术产生的数据区块有序链接而成,每个区块包含一定时间内产生的不可篡改信息。\n\n下面使用Python语言一步步打造一个简单的区块链原型。\n\n\n### 区块结构\n\n学习区块链,就要先从区块的结构开始说起,因为价值信息就存在区块中,比如比特币的区块存储的是交易记录。除此以外,区块还含有一些技术信息,来维持区块的结构,抽取其中最关键的5个技术信息,分别是下标(Index),时间戳(Timestamp),前一个区块的哈希值(Previous Hash)和当前区块的哈希值(Current Hash),下面用类来封装这些信息,Python代码如下:\n```python\nimport hashlib\n\nclass Block(object):\n    def __init__(self, index, data, prev_hash, timestamp):\n        self.index = index\n        self.data = data\n        self.prev_hash = prev_hash\n        self.timestamp = timestamp\n        self.cur_hash = self.do_hash(index, data, prev_hash, timestamp)    \n    def do_hash(self, *args):\n        sha256 = hashlib.sha256()        \n        for arg in args:\n            sha256.update(str(arg).encode('utf-8'))        \n        return sha256.hexdigest()\n```\n\nindex、timestamp、prev_hash和cur_hash这四个技术信息构成了区块的头部数据,这是一个独立的数据结构;data参数储存价值信息,比如交易记录,也是一个单独的数据结构,但是在这里为了使其简单、便于理解,就混合在一个结构中。\n\n上面代码的do_hash方法,是用来对区块进行哈希加密的,跟「挖矿」无关,没有解决工作量证明(POW)的问题,计算哈希是区块链中的重要环节。这里把区块里的字段数据关联起来后,使用SHA256算法进行哈希计算,得出当前哈希值cur_hash。\n\n### 区块链结构\n\n区块链本质上就是一个拥有特定结构的数据库,是一个有序且反向链接的列表,在这个列表里,区块按照插入的顺序排列,通过prev_hash这个字段找到上一个区块的哈希值,把每一个区块都链接到上一个区块上,如下图所示:\n\n![block_structure.jpg](https://shootertt.github.io/uploads/block_structure.jpg)\n\n\n下面我创建了一个Manager类,用来封装区块链的一些操作,达到维护区块链结构的目的:\n\n```python\nimport datetime\nclass Manager(object):    \n    \"\"\"Blockchain manager\"\"\"\n\n    blockchain = []\n\n    def __init__(self):\n        self.origin_index = 0\n        self.origin_prev_hash = '0'\n        self.origin_data = 'origin block'\n        self.origin_timestamp = datetime.datetime(2016, 4, 1, 0, 0).timestamp()\n        Manager.blockchain.append(self.get_origin_block())\n```\n\n比特币使用LevelDB来存储区块链,为了简化,在上面代码上使用Python的列表(List)把区块链直接存储在内存中。刚刚初始化的时候区块链中没有区块,为了能够不断添加新的区块,我们需要区块链中至少有一个区块,这第一个区块被称为「创始块(Genesis Block)」,下面给出创建「创始块」的方法:\n\n```python\nclass Manager(object):\n    ...\n    def get_origin_block(self):\n        return  Block(self.origin_index, self.origin_data, self.origin_prev_hash,\n            self.origin_timestamp)\n    ...\n```\n\n有了「创始块」之后,就可以根据当前最新的区块生成下一个区块,代码如下:\n\n```python\nclass Manager(object):\n    ...\n    def get_latest_block(self):\n        return Manager.blockchain[-1]\n\n    def generate_next_block(self, new_data):\n        prev_block = self.get_latest_block()\n        next_index = prev_block.index + 1\n\n        next_timestamp = datetime.datetime.now().timestamp()\n        return  Block(next_index, new_data, prev_block.cur_hash, next_timestamp)\n    ...\n```\n\n### 结论\n\n以上创建了一个简单的区块链原型,只是一个区块列表,真正的区块链在添加区块的时候需要经历大量的计算,这个过程就是传说中的「工作量证明」(POW,Proof-Of-Work),并且还需要全网「共识机制」的认可。",
      "json_metadata": "{\"tags\":[\"cn\",\"python\",\"blockchain\"],\"image\":[\"https://shootertt.github.io/uploads/block_structure.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "python",
      "permlink": "6pgo9m-python",
      "title": "块说链语:用Python撸一串区块链"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:28:00",
  "trx_id": "b16539928987a3cd5a03214c0d6d0a431330d8f2",
  "trx_in_block": 8,
  "virtual_op": 0
}
heha37published a new post: 6pgo9m-python
2017/10/19 03:27:33
authorheha37
body### 简介 说到区块链,大家不免会想到比特币、加密货币、智能合约、交易、支付,但是这些都是区块链解决的问题,不是其本身,并且这些把理解区块链变得复杂,下面配合Python代码理解区块链结构。 先总结一下区块链的定义,区块链本质上是一个能够保证系统诚实可信的分布式数据库,是由多种技术整合而成,该数据库由使用密码学技术产生的数据区块有序链接而成,每个区块包含一定时间内产生的不可篡改信息。 下面使用Python语言一步步打造一个简单的区块链原型。 ### 区块结构 学习区块链,就要先从区块的结构开始说起,因为价值信息就存在区块中,比如比特币的区块存储的是交易记录。除此以外,区块还含有一些技术信息,来维持区块的结构,抽取其中最关键的5个技术信息,分别是下标(Index),时间戳(Timestamp),前一个区块的哈希值(Previous Hash)和当前区块的哈希值(Current Hash),下面用类来封装这些信息,Python代码如下: ```python import hashlib class Block(object): def __init__(self, index, data, prev_hash, timestamp): self.index = index self.data = data self.prev_hash = prev_hash self.timestamp = timestamp self.cur_hash = self.do_hash(index, data, prev_hash, timestamp) def do_hash(self, *args): sha256 = hashlib.sha256() for arg in args: sha256.update(str(arg).encode('utf-8')) return sha256.hexdigest() ``` index、timestamp、prev_hash和cur_hash这四个技术信息构成了区块的头部数据,这是一个独立的数据结构;data参数储存价值信息,比如交易记录,也是一个单独的数据结构,但是在这里为了使其简单、便于理解,就混合在一个结构中。 上面代码的do_hash方法,是用来对区块进行哈希加密的,跟「挖矿」无关,没有解决工作量证明(POW)的问题,计算哈希是区块链中的重要环节。这里把区块里的字段数据关联起来后,使用SHA256算法进行哈希计算,得出当前哈希值cur_hash。 ### 区块链结构 区块链本质上就是一个拥有特定结构的数据库,是一个有序且反向链接的列表,在这个列表里,区块按照插入的顺序排列,通过prev_hash这个字段找到上一个区块的哈希值,把每一个区块都链接到上一个区块上,如下图所示: ![block_structure.jpg](https://shootertt.github.io/uploads/block_structure.jpg) 下面我创建了一个Manager类,用来封装区块链的一些操作,达到维护区块链结构的目的: ```python import datetime class Manager(object): """Blockchain manager""" blockchain = [] def __init__(self): self.origin_index = 0 self.origin_prev_hash = '0' self.origin_data = 'origin block' self.origin_timestamp = datetime.datetime(2016, 4, 1, 0, 0).timestamp() Manager.blockchain.append(self.get_origin_block()) ``` 比特币使用LevelDB来存储区块链,为了简化,在上面代码上使用Python的列表(List)把区块链直接存储在内存中。刚刚初始化的时候区块链中没有区块,为了能够不断添加新的区块,我们需要区块链中至少有一个区块,这第一个区块被称为「创始块(Genesis Block)」,下面给出创建「创始块」的方法: ```python class Manager(object): ... def get_origin_block(self): return Block(self.origin_index, self.origin_data, self.origin_prev_hash, self.origin_timestamp) ... ``` 有了「创始块」之后,就可以根据当前最新的区块生成下一个区块,代码如下: ```python class Manager(object): ... def get_latest_block(self): return Manager.blockchain[-1] def generate_next_block(self, new_data): prev_block = self.get_latest_block() next_index = prev_block.index + 1 next_timestamp = datetime.datetime.now().timestamp() return Block(next_index, new_data, prev_block.cur_hash, next_timestamp) ... ``` ### 结论 以上创建了一个简单的区块链原型,只是一个区块列表,真正的区块链在添加区块的时候需要经历大量的计算,这个过程就是传说中的「工作量证明」(POW,Proof-Of-Work),并且还需要全网「共识机制」的认可。
json metadata{"tags":["cn","python","blockchain"],"image":["https://shootertt.github.io/uploads/block_structure.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkpython
permlink6pgo9m-python
title块说链语:用Python撸一串区块链
Transaction InfoBlock #16455492/Trx 63c64b961e1c7ae4849a49dec64cdcee91a0c31b
View Raw JSON Data
{
  "block": 16455492,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "### 简介\n\n说到区块链,大家不免会想到比特币、加密货币、智能合约、交易、支付,但是这些都是区块链解决的问题,不是其本身,并且这些把理解区块链变得复杂,下面配合Python代码理解区块链结构。\n\n先总结一下区块链的定义,区块链本质上是一个能够保证系统诚实可信的分布式数据库,是由多种技术整合而成,该数据库由使用密码学技术产生的数据区块有序链接而成,每个区块包含一定时间内产生的不可篡改信息。\n\n下面使用Python语言一步步打造一个简单的区块链原型。\n\n\n### 区块结构\n\n学习区块链,就要先从区块的结构开始说起,因为价值信息就存在区块中,比如比特币的区块存储的是交易记录。除此以外,区块还含有一些技术信息,来维持区块的结构,抽取其中最关键的5个技术信息,分别是下标(Index),时间戳(Timestamp),前一个区块的哈希值(Previous Hash)和当前区块的哈希值(Current Hash),下面用类来封装这些信息,Python代码如下:\n```python\nimport hashlib\n\nclass Block(object):\n    def __init__(self, index, data, prev_hash, timestamp):\n        self.index = index\n        self.data = data\n        self.prev_hash = prev_hash\n        self.timestamp = timestamp\n        self.cur_hash = self.do_hash(index, data, prev_hash, timestamp)    \n    def do_hash(self, *args):\n        sha256 = hashlib.sha256()        \n        for arg in args:\n            sha256.update(str(arg).encode('utf-8'))        \n        return sha256.hexdigest()\n```\n\nindex、timestamp、prev_hash和cur_hash这四个技术信息构成了区块的头部数据,这是一个独立的数据结构;data参数储存价值信息,比如交易记录,也是一个单独的数据结构,但是在这里为了使其简单、便于理解,就混合在一个结构中。\n\n上面代码的do_hash方法,是用来对区块进行哈希加密的,跟「挖矿」无关,没有解决工作量证明(POW)的问题,计算哈希是区块链中的重要环节。这里把区块里的字段数据关联起来后,使用SHA256算法进行哈希计算,得出当前哈希值cur_hash。\n\n### 区块链结构\n\n区块链本质上就是一个拥有特定结构的数据库,是一个有序且反向链接的列表,在这个列表里,区块按照插入的顺序排列,通过prev_hash这个字段找到上一个区块的哈希值,把每一个区块都链接到上一个区块上,如下图所示:\n\n![block_structure.jpg](https://shootertt.github.io/uploads/block_structure.jpg)\n\n\n下面我创建了一个Manager类,用来封装区块链的一些操作,达到维护区块链结构的目的:\n\n```python\nimport datetime\nclass Manager(object):    \n    \"\"\"Blockchain manager\"\"\"\n\n    blockchain = []\n\n    def __init__(self):\n        self.origin_index = 0\n        self.origin_prev_hash = '0'\n        self.origin_data = 'origin block'\n        self.origin_timestamp = datetime.datetime(2016, 4, 1, 0, 0).timestamp()\n        Manager.blockchain.append(self.get_origin_block())\n```\n\n比特币使用LevelDB来存储区块链,为了简化,在上面代码上使用Python的列表(List)把区块链直接存储在内存中。刚刚初始化的时候区块链中没有区块,为了能够不断添加新的区块,我们需要区块链中至少有一个区块,这第一个区块被称为「创始块(Genesis Block)」,下面给出创建「创始块」的方法:\n\n```python\nclass Manager(object):\n    ...\n    def get_origin_block(self):\n        return  Block(self.origin_index, self.origin_data, self.origin_prev_hash,\n            self.origin_timestamp)\n    ...\n```\n\n有了「创始块」之后,就可以根据当前最新的区块生成下一个区块,代码如下:\n\n```python\nclass Manager(object):\n    ...\n    def get_latest_block(self):\n        return Manager.blockchain[-1]\n\n    def generate_next_block(self, new_data):\n        prev_block = self.get_latest_block()\n        next_index = prev_block.index + 1\n\n        next_timestamp = datetime.datetime.now().timestamp()\n        return  Block(next_index, new_data, prev_block.cur_hash, next_timestamp)\n    ...\n```\n\n### 结论\n\n以上创建了一个简单的区块链原型,只是一个区块列表,真正的区块链在添加区块的时候需要经历大量的计算,这个过程就是传说中的「工作量证明」(POW,Proof-Of-Work),并且还需要全网「共识机制」的认可。",
      "json_metadata": "{\"tags\":[\"cn\",\"python\",\"blockchain\"],\"image\":[\"https://shootertt.github.io/uploads/block_structure.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "python",
      "permlink": "6pgo9m-python",
      "title": "块说链语:用Python撸一串区块链"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:27:33",
  "trx_id": "63c64b961e1c7ae4849a49dec64cdcee91a0c31b",
  "trx_in_block": 17,
  "virtual_op": 0
}
heha37updated their account properties
2017/10/19 03:23:03
accountheha37
json metadata{"profile":{"name":"heha3737","profile_image":"https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg"}}
memo keySTM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG
Transaction InfoBlock #16455402/Trx a8602a14a03b1a55d3e1a1aa8822901433f538ae
View Raw JSON Data
{
  "block": 16455402,
  "op": [
    "account_update",
    {
      "account": "heha37",
      "json_metadata": "{\"profile\":{\"name\":\"heha3737\",\"profile_image\":\"https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg\"}}",
      "memo_key": "STM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:23:03",
  "trx_id": "a8602a14a03b1a55d3e1a1aa8822901433f538ae",
  "trx_in_block": 0,
  "virtual_op": 0
}
heha37updated their account properties
2017/10/19 03:22:36
accountheha37
json metadata{"profile":{"name":"heha3737","cover_image":"https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg"}}
memo keySTM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG
Transaction InfoBlock #16455393/Trx 0271b093f9ec60a4aad0279b04a7eb7847892355
View Raw JSON Data
{
  "block": 16455393,
  "op": [
    "account_update",
    {
      "account": "heha37",
      "json_metadata": "{\"profile\":{\"name\":\"heha3737\",\"cover_image\":\"https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg\"}}",
      "memo_key": "STM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:22:36",
  "trx_id": "0271b093f9ec60a4aad0279b04a7eb7847892355",
  "trx_in_block": 4,
  "virtual_op": 0
}
2017/10/19 03:20:42
authorheha37
bodyNo sweat
json metadata{"tags":["python"],"app":"steemit/0.1"}
parent authordhiki
parent permlinkre-heha37-20171019t101257440z
permlinkre-dhiki-re-heha37-20171019t032042184z
title
Transaction InfoBlock #16455355/Trx b953df799834db356d7ecbeaa5a6e1a4c4b195ac
View Raw JSON Data
{
  "block": 16455355,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "No sweat",
      "json_metadata": "{\"tags\":[\"python\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "dhiki",
      "parent_permlink": "re-heha37-20171019t101257440z",
      "permlink": "re-dhiki-re-heha37-20171019t032042184z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:20:42",
  "trx_id": "b953df799834db356d7ecbeaa5a6e1a4c4b195ac",
  "trx_in_block": 25,
  "virtual_op": 0
}
heha37followed @dhiki
2017/10/19 03:15:33
idfollow
json["follow",{"follower":"heha37","following":"dhiki","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #16455252/Trx 098a4c4a5ed89e755d59c20660729ae9ff0f877b
View Raw JSON Data
{
  "block": 16455252,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"dhiki\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:15:33",
  "trx_id": "098a4c4a5ed89e755d59c20660729ae9ff0f877b",
  "trx_in_block": 19,
  "virtual_op": 0
}
heha37published a new post: 6pgo9m-python
2017/10/19 03:15:15
authorheha37
body@@ -225,16 +225,17 @@ %E5%9E%8B%E3%80%82%0A%0A%0A### + %E5%8C%BA%E5%9D%97%E7%BB%93%E6%9E%84%0A%0A%E5%AD%A6%E4%B9%A0 @@ -1310,16 +1310,43 @@ re.jpg%5D( +https://shootertt.github.io /uploads
json metadata{"tags":["python","blockchain"],"image":["https://shootertt.github.io/uploads/block_structure.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkpython
permlink6pgo9m-python
title块说链语:用Python撸一串区块链
Transaction InfoBlock #16455246/Trx 81b93d83c7a227f4c9a3d713b4f0e2f51793693c
View Raw JSON Data
{
  "block": 16455246,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -225,16 +225,17 @@\n %E5%9E%8B%E3%80%82%0A%0A%0A###\n+ \n %E5%8C%BA%E5%9D%97%E7%BB%93%E6%9E%84%0A%0A%E5%AD%A6%E4%B9%A0\n@@ -1310,16 +1310,43 @@\n re.jpg%5D(\n+https://shootertt.github.io\n /uploads\n",
      "json_metadata": "{\"tags\":[\"python\",\"blockchain\"],\"image\":[\"https://shootertt.github.io/uploads/block_structure.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "python",
      "permlink": "6pgo9m-python",
      "title": "块说链语:用Python撸一串区块链"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:15:15",
  "trx_id": "81b93d83c7a227f4c9a3d713b4f0e2f51793693c",
  "trx_in_block": 19,
  "virtual_op": 0
}
2017/10/19 03:13:12
authordhiki
bodyThanks u informa
json metadata{"tags":"python","app":"esteem/1.4.6","format":"markdown+html","community":"esteem"}
parent authorheha37
parent permlink6pgo9m-python
permlinkre-heha37-20171019t101257440z
title
Transaction InfoBlock #16455205/Trx e54bb2d96d9a36acd82272726fc9eecf05f1adbe
View Raw JSON Data
{
  "block": 16455205,
  "op": [
    "comment",
    {
      "author": "dhiki",
      "body": "Thanks u informa",
      "json_metadata": "{\"tags\":\"python\",\"app\":\"esteem/1.4.6\",\"format\":\"markdown+html\",\"community\":\"esteem\"}",
      "parent_author": "heha37",
      "parent_permlink": "6pgo9m-python",
      "permlink": "re-heha37-20171019t101257440z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:13:12",
  "trx_id": "e54bb2d96d9a36acd82272726fc9eecf05f1adbe",
  "trx_in_block": 18,
  "virtual_op": 0
}
heha37published a new post: 6pgo9m-python
2017/10/19 03:12:15
authorheha37
body### 简介 说到区块链,大家不免会想到比特币、加密货币、智能合约、交易、支付,但是这些都是区块链解决的问题,不是其本身,并且这些把理解区块链变得复杂,下面配合Python代码理解区块链结构。 先总结一下区块链的定义,区块链本质上是一个能够保证系统诚实可信的分布式数据库,是由多种技术整合而成,该数据库由使用密码学技术产生的数据区块有序链接而成,每个区块包含一定时间内产生的不可篡改信息。 下面使用Python语言一步步打造一个简单的区块链原型。 ###区块结构 学习区块链,就要先从区块的结构开始说起,因为价值信息就存在区块中,比如比特币的区块存储的是交易记录。除此以外,区块还含有一些技术信息,来维持区块的结构,抽取其中最关键的5个技术信息,分别是下标(Index),时间戳(Timestamp),前一个区块的哈希值(Previous Hash)和当前区块的哈希值(Current Hash),下面用类来封装这些信息,Python代码如下: ```python import hashlib class Block(object): def __init__(self, index, data, prev_hash, timestamp): self.index = index self.data = data self.prev_hash = prev_hash self.timestamp = timestamp self.cur_hash = self.do_hash(index, data, prev_hash, timestamp) def do_hash(self, *args): sha256 = hashlib.sha256() for arg in args: sha256.update(str(arg).encode('utf-8')) return sha256.hexdigest() ``` index、timestamp、prev_hash和cur_hash这四个技术信息构成了区块的头部数据,这是一个独立的数据结构;data参数储存价值信息,比如交易记录,也是一个单独的数据结构,但是在这里为了使其简单、便于理解,就混合在一个结构中。 上面代码的do_hash方法,是用来对区块进行哈希加密的,跟「挖矿」无关,没有解决工作量证明(POW)的问题,计算哈希是区块链中的重要环节。这里把区块里的字段数据关联起来后,使用SHA256算法进行哈希计算,得出当前哈希值cur_hash。 ### 区块链结构 区块链本质上就是一个拥有特定结构的数据库,是一个有序且反向链接的列表,在这个列表里,区块按照插入的顺序排列,通过prev_hash这个字段找到上一个区块的哈希值,把每一个区块都链接到上一个区块上,如下图所示: ![block_structure.jpg](/uploads/block_structure.jpg) 下面我创建了一个Manager类,用来封装区块链的一些操作,达到维护区块链结构的目的: ```python import datetime class Manager(object): """Blockchain manager""" blockchain = [] def __init__(self): self.origin_index = 0 self.origin_prev_hash = '0' self.origin_data = 'origin block' self.origin_timestamp = datetime.datetime(2016, 4, 1, 0, 0).timestamp() Manager.blockchain.append(self.get_origin_block()) ``` 比特币使用LevelDB来存储区块链,为了简化,在上面代码上使用Python的列表(List)把区块链直接存储在内存中。刚刚初始化的时候区块链中没有区块,为了能够不断添加新的区块,我们需要区块链中至少有一个区块,这第一个区块被称为「创始块(Genesis Block)」,下面给出创建「创始块」的方法: ```python class Manager(object): ... def get_origin_block(self): return Block(self.origin_index, self.origin_data, self.origin_prev_hash, self.origin_timestamp) ... ``` 有了「创始块」之后,就可以根据当前最新的区块生成下一个区块,代码如下: ```python class Manager(object): ... def get_latest_block(self): return Manager.blockchain[-1] def generate_next_block(self, new_data): prev_block = self.get_latest_block() next_index = prev_block.index + 1 next_timestamp = datetime.datetime.now().timestamp() return Block(next_index, new_data, prev_block.cur_hash, next_timestamp) ... ``` ### 结论 以上创建了一个简单的区块链原型,只是一个区块列表,真正的区块链在添加区块的时候需要经历大量的计算,这个过程就是传说中的「工作量证明」(POW,Proof-Of-Work),并且还需要全网「共识机制」的认可。
json metadata{"tags":["python","blockchain"],"image":["/uploads/block_structure.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkpython
permlink6pgo9m-python
title块说链语:用Python撸一串区块链
Transaction InfoBlock #16455186/Trx de20bfa1f417c0faae14bbb8d2add35db1a6bf41
View Raw JSON Data
{
  "block": 16455186,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "### 简介\n\n说到区块链,大家不免会想到比特币、加密货币、智能合约、交易、支付,但是这些都是区块链解决的问题,不是其本身,并且这些把理解区块链变得复杂,下面配合Python代码理解区块链结构。\n\n先总结一下区块链的定义,区块链本质上是一个能够保证系统诚实可信的分布式数据库,是由多种技术整合而成,该数据库由使用密码学技术产生的数据区块有序链接而成,每个区块包含一定时间内产生的不可篡改信息。\n\n下面使用Python语言一步步打造一个简单的区块链原型。\n\n\n###区块结构\n\n学习区块链,就要先从区块的结构开始说起,因为价值信息就存在区块中,比如比特币的区块存储的是交易记录。除此以外,区块还含有一些技术信息,来维持区块的结构,抽取其中最关键的5个技术信息,分别是下标(Index),时间戳(Timestamp),前一个区块的哈希值(Previous Hash)和当前区块的哈希值(Current Hash),下面用类来封装这些信息,Python代码如下:\n```python\nimport hashlib\n\nclass Block(object):\n    def __init__(self, index, data, prev_hash, timestamp):\n        self.index = index\n        self.data = data\n        self.prev_hash = prev_hash\n        self.timestamp = timestamp\n        self.cur_hash = self.do_hash(index, data, prev_hash, timestamp)    \n    def do_hash(self, *args):\n        sha256 = hashlib.sha256()        \n        for arg in args:\n            sha256.update(str(arg).encode('utf-8'))        \n        return sha256.hexdigest()\n```\n\nindex、timestamp、prev_hash和cur_hash这四个技术信息构成了区块的头部数据,这是一个独立的数据结构;data参数储存价值信息,比如交易记录,也是一个单独的数据结构,但是在这里为了使其简单、便于理解,就混合在一个结构中。\n\n上面代码的do_hash方法,是用来对区块进行哈希加密的,跟「挖矿」无关,没有解决工作量证明(POW)的问题,计算哈希是区块链中的重要环节。这里把区块里的字段数据关联起来后,使用SHA256算法进行哈希计算,得出当前哈希值cur_hash。\n\n### 区块链结构\n\n区块链本质上就是一个拥有特定结构的数据库,是一个有序且反向链接的列表,在这个列表里,区块按照插入的顺序排列,通过prev_hash这个字段找到上一个区块的哈希值,把每一个区块都链接到上一个区块上,如下图所示:\n\n![block_structure.jpg](/uploads/block_structure.jpg)\n\n\n下面我创建了一个Manager类,用来封装区块链的一些操作,达到维护区块链结构的目的:\n\n```python\nimport datetime\nclass Manager(object):    \n    \"\"\"Blockchain manager\"\"\"\n\n    blockchain = []\n\n    def __init__(self):\n        self.origin_index = 0\n        self.origin_prev_hash = '0'\n        self.origin_data = 'origin block'\n        self.origin_timestamp = datetime.datetime(2016, 4, 1, 0, 0).timestamp()\n        Manager.blockchain.append(self.get_origin_block())\n```\n\n比特币使用LevelDB来存储区块链,为了简化,在上面代码上使用Python的列表(List)把区块链直接存储在内存中。刚刚初始化的时候区块链中没有区块,为了能够不断添加新的区块,我们需要区块链中至少有一个区块,这第一个区块被称为「创始块(Genesis Block)」,下面给出创建「创始块」的方法:\n\n```python\nclass Manager(object):\n    ...\n    def get_origin_block(self):\n        return  Block(self.origin_index, self.origin_data, self.origin_prev_hash,\n            self.origin_timestamp)\n    ...\n```\n\n有了「创始块」之后,就可以根据当前最新的区块生成下一个区块,代码如下:\n\n```python\nclass Manager(object):\n    ...\n    def get_latest_block(self):\n        return Manager.blockchain[-1]\n\n    def generate_next_block(self, new_data):\n        prev_block = self.get_latest_block()\n        next_index = prev_block.index + 1\n\n        next_timestamp = datetime.datetime.now().timestamp()\n        return  Block(next_index, new_data, prev_block.cur_hash, next_timestamp)\n    ...\n```\n\n### 结论\n\n以上创建了一个简单的区块链原型,只是一个区块列表,真正的区块链在添加区块的时候需要经历大量的计算,这个过程就是传说中的「工作量证明」(POW,Proof-Of-Work),并且还需要全网「共识机制」的认可。",
      "json_metadata": "{\"tags\":[\"python\",\"blockchain\"],\"image\":[\"/uploads/block_structure.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "python",
      "permlink": "6pgo9m-python",
      "title": "块说链语:用Python撸一串区块链"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-19T03:12:15",
  "trx_id": "de20bfa1f417c0faae14bbb8d2add35db1a6bf41",
  "trx_in_block": 1,
  "virtual_op": 0
}
heha37updated their account properties
2017/10/17 03:34:21
accountheha37
active{"account_auths":[],"key_auths":[["STM5wgyLj55Ldcn1x7FqPmfeR1tJUzg6WEjCcpTE7n67m8HnrQzoE",1]],"weight_threshold":1}
json metadata{"profile":{"name":"heha3737"}}
memo keySTM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG
owner{"account_auths":[],"key_auths":[["STM59uk43E3VyJ2NuebNRh6As8SvxBDqEHj2pTD9xGYszVb6E83zn",1]],"weight_threshold":1}
posting{"account_auths":[],"key_auths":[["STM8QNX8cccFMra8pAQCPQSjKjZeDtjZXbbKTr8EJNsjvvKgEBfsu",1]],"weight_threshold":1}
Transaction InfoBlock #16398042/Trx 51f6d372a72eee33bcbba43a6d5ed15db4fb07df
View Raw JSON Data
{
  "block": 16398042,
  "op": [
    "account_update",
    {
      "account": "heha37",
      "active": {
        "account_auths": [],
        "key_auths": [
          [
            "STM5wgyLj55Ldcn1x7FqPmfeR1tJUzg6WEjCcpTE7n67m8HnrQzoE",
            1
          ]
        ],
        "weight_threshold": 1
      },
      "json_metadata": "{\"profile\":{\"name\":\"heha3737\"}}",
      "memo_key": "STM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG",
      "owner": {
        "account_auths": [],
        "key_auths": [
          [
            "STM59uk43E3VyJ2NuebNRh6As8SvxBDqEHj2pTD9xGYszVb6E83zn",
            1
          ]
        ],
        "weight_threshold": 1
      },
      "posting": {
        "account_auths": [],
        "key_auths": [
          [
            "STM8QNX8cccFMra8pAQCPQSjKjZeDtjZXbbKTr8EJNsjvvKgEBfsu",
            1
          ]
        ],
        "weight_threshold": 1
      }
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-17T03:34:21",
  "trx_id": "51f6d372a72eee33bcbba43a6d5ed15db4fb07df",
  "trx_in_block": 17,
  "virtual_op": 0
}
heha37updated their account properties
2017/10/17 03:10:33
accountheha37
json metadata{"profile":{"name":"heha3737"}}
memo keySTM8Uxqj2bF7dHriCBuNV3x38K5K7GqhcuANsYrmoQabKLPa1bbVb
Transaction InfoBlock #16397566/Trx e2be07cec3fc3a75f8765dd15ddc5c16899f6fa6
View Raw JSON Data
{
  "block": 16397566,
  "op": [
    "account_update",
    {
      "account": "heha37",
      "json_metadata": "{\"profile\":{\"name\":\"heha3737\"}}",
      "memo_key": "STM8Uxqj2bF7dHriCBuNV3x38K5K7GqhcuANsYrmoQabKLPa1bbVb"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-17T03:10:33",
  "trx_id": "e2be07cec3fc3a75f8765dd15ddc5c16899f6fa6",
  "trx_in_block": 22,
  "virtual_op": 0
}
mario6upvoted (100.00%) @heha37 / 4dqlkh
2017/10/16 06:20:15
authorheha37
permlink4dqlkh
votermario6
weight10000 (100.00%)
Transaction InfoBlock #16372563/Trx f63199046f9cc8dbb36ec34995362f40665eba0d
View Raw JSON Data
{
  "block": 16372563,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "4dqlkh",
      "voter": "mario6",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-16T06:20:15",
  "trx_id": "f63199046f9cc8dbb36ec34995362f40665eba0d",
  "trx_in_block": 3,
  "virtual_op": 0
}
heha37published a new post: 6pug2z
2017/08/10 08:05:03
authorheha37
body@@ -1,8 +1,63 @@ +!%5Bleaf%5D(https://shootertt.github.io/uploads/leaf.jpg)%0A%0A %E4%B8%80%E4%B8%AA%E4%BA%BA%E5%9C%A8%E7%B2%BE%E5%8A%9B%E3%80%81%E8%83%BD
json metadata{"tags":["cn"],"app":"steemit/0.1","format":"markdown","image":["https://shootertt.github.io/uploads/leaf.jpg"]}
parent author
parent permlinkcn
permlink6pug2z
title请把你嘴里的先嚼烂了
Transaction InfoBlock #14447228/Trx 2e8d4644630ae9092b402ce9b67b5dfedf1edb38
View Raw JSON Data
{
  "block": 14447228,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -1,8 +1,63 @@\n+!%5Bleaf%5D(https://shootertt.github.io/uploads/leaf.jpg)%0A%0A\n %E4%B8%80%E4%B8%AA%E4%BA%BA%E5%9C%A8%E7%B2%BE%E5%8A%9B%E3%80%81%E8%83%BD\n",
      "json_metadata": "{\"tags\":[\"cn\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://shootertt.github.io/uploads/leaf.jpg\"]}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "6pug2z",
      "title": "请把你嘴里的先嚼烂了"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-08-10T08:05:03",
  "trx_id": "2e8d4644630ae9092b402ce9b67b5dfedf1edb38",
  "trx_in_block": 10,
  "virtual_op": 0
}
heha37published a new post: 6pug2z
2017/08/10 08:03:54
authorheha37
body一个人在精力、能量有限的情况下,一定要专注。 最近,自己参与了多个项目,并且脑子中不断蹦出新的想法,也想去进行落地实现,产生了「无所不能」的错觉。最后搞得自己忙东忙西,哪一个都没有搞透,而且还觉得非常的疲倦,没有成就感。 「什么都去做」其实是一种不太好的做事策略,是行动上的勤奋,浮躁只是其表象,贪婪和害怕才是其本质。害怕变化、害怕自己因为没抓住某个神秘的机会,而失去了对未来的掌控力 ,就像是现在加密货币的ICO风潮一样,要么某个品种的ICO没有跟上,就会后悔万分(其实并没有对品种进行什么研究,不知道自己在后悔什么);要么时时刻刻打听风声,紧盯「ICO变动」,生怕失去了什么神秘大奖,把自己忙得够呛。对于贪婪,我觉得它是一种收藏癖,思想上没有确定什么对自己来说是重要的,就是想去单纯地囤积,又由于精力和能量是有限的,所以每一件事都做得并不理想,造成了「贪多嚼不烂」的情形。 其实自己专注做好一两件事情就可以了,何必忙忙碌碌无所为,有一句古话「鹰立如睡,虎行似病」,把精力和能量集中在自己真正的「猎物」上。
json metadata{"tags":["cn"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink6pug2z
title请把你嘴里的先嚼烂了
Transaction InfoBlock #14447205/Trx ddceeb63cce1fa6f5125b8664791df50820e5deb
View Raw JSON Data
{
  "block": 14447205,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "一个人在精力、能量有限的情况下,一定要专注。\n\n最近,自己参与了多个项目,并且脑子中不断蹦出新的想法,也想去进行落地实现,产生了「无所不能」的错觉。最后搞得自己忙东忙西,哪一个都没有搞透,而且还觉得非常的疲倦,没有成就感。\n\n「什么都去做」其实是一种不太好的做事策略,是行动上的勤奋,浮躁只是其表象,贪婪和害怕才是其本质。害怕变化、害怕自己因为没抓住某个神秘的机会,而失去了对未来的掌控力 ,就像是现在加密货币的ICO风潮一样,要么某个品种的ICO没有跟上,就会后悔万分(其实并没有对品种进行什么研究,不知道自己在后悔什么);要么时时刻刻打听风声,紧盯「ICO变动」,生怕失去了什么神秘大奖,把自己忙得够呛。对于贪婪,我觉得它是一种收藏癖,思想上没有确定什么对自己来说是重要的,就是想去单纯地囤积,又由于精力和能量是有限的,所以每一件事都做得并不理想,造成了「贪多嚼不烂」的情形。\n\n其实自己专注做好一两件事情就可以了,何必忙忙碌碌无所为,有一句古话「鹰立如睡,虎行似病」,把精力和能量集中在自己真正的「猎物」上。",
      "json_metadata": "{\"tags\":[\"cn\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "6pug2z",
      "title": "请把你嘴里的先嚼烂了"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-08-10T08:03:54",
  "trx_id": "ddceeb63cce1fa6f5125b8664791df50820e5deb",
  "trx_in_block": 17,
  "virtual_op": 0
}
heha37published a new post: 6pug2z
2017/08/10 07:58:15
authorheha37
body一个人在精力、能量有限的情况下,一定要专注。 最近,自己参与了多个项目,并且脑子中不断蹦出新的想法,也想去进行落地实现,产生了「无所不能」的错觉。最后搞得自己忙东忙西,哪一个都没有搞透,而且还觉得非常的疲倦,没有成就感。 「什么都去做」其实是一种不太好的做事策略,是行动上的勤奋,浮躁只是其表象,贪婪和害怕才是其本质。害怕变化、害怕自己因为没抓住某个神秘的机会,而失去了对未来的掌控力 ,就像是现在加密货币的ICO风潮一样,要么某个品种的ICO没有跟上,就会后悔万分(其实并没有对品种进行什么研究,不知道自己在后悔什么);要么时时刻刻打听风声,紧盯「ICO变动」,生怕失去了什么神秘大奖,把自己忙得够呛。对于贪婪,我觉得它是一种收藏癖,思想上没有确定什么对自己来说是重要的,就是想去单纯地囤积,又由于精力和能量是有限的,所以每一件事都做得并不理想,造成了「贪多嚼不烂」的情形。 其实自己专注做好一两件事情就可以了,何必忙忙碌碌无所为,有一句古话「鹰立如睡,虎行似病」,把精力和能量集中在自己真正的「猎物」上。
json metadata{"tags":["cn"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink6pug2z
title请把你嘴里的先嚼烂了
Transaction InfoBlock #14447092/Trx 21b97392f608f8e4281df6eee424c86cb972530d
View Raw JSON Data
{
  "block": 14447092,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "一个人在精力、能量有限的情况下,一定要专注。\n\n最近,自己参与了多个项目,并且脑子中不断蹦出新的想法,也想去进行落地实现,产生了「无所不能」的错觉。最后搞得自己忙东忙西,哪一个都没有搞透,而且还觉得非常的疲倦,没有成就感。\n\n「什么都去做」其实是一种不太好的做事策略,是行动上的勤奋,浮躁只是其表象,贪婪和害怕才是其本质。害怕变化、害怕自己因为没抓住某个神秘的机会,而失去了对未来的掌控力 ,就像是现在加密货币的ICO风潮一样,要么某个品种的ICO没有跟上,就会后悔万分(其实并没有对品种进行什么研究,不知道自己在后悔什么);要么时时刻刻打听风声,紧盯「ICO变动」,生怕失去了什么神秘大奖,把自己忙得够呛。对于贪婪,我觉得它是一种收藏癖,思想上没有确定什么对自己来说是重要的,就是想去单纯地囤积,又由于精力和能量是有限的,所以每一件事都做得并不理想,造成了「贪多嚼不烂」的情形。\n\n其实自己专注做好一两件事情就可以了,何必忙忙碌碌无所为,有一句古话「鹰立如睡,虎行似病」,把精力和能量集中在自己真正的「猎物」上。",
      "json_metadata": "{\"tags\":[\"cn\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "6pug2z",
      "title": "请把你嘴里的先嚼烂了"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-08-10T07:58:15",
  "trx_id": "21b97392f608f8e4281df6eee424c86cb972530d",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/07/24 09:05:33
authormaxtill94
body分析2队长 : -NEVERDIE 最后7天所有参与众筹的参与者给予20%的NDC币做赏赐。 最少参与额为 5以太坊,只有在NEVERDIE 中国链接上可参与。 https://neverdie.io/ch.html
json metadata{"tags":["cn"],"links":["https://neverdie.io/ch.html"],"app":"steemit/0.1"}
parent authorheha37
parent permlink5e2gjy
permlinkre-heha37-5e2gjy-20170724t090531901z
title
Transaction InfoBlock #13959369/Trx c88f2b45f96886dcb0cebce5dcf37f0f44a11699
View Raw JSON Data
{
  "block": 13959369,
  "op": [
    "comment",
    {
      "author": "maxtill94",
      "body": "分析2队长 : -NEVERDIE 最后7天所有参与众筹的参与者给予20%的NDC币做赏赐。\n最少参与额为 5以太坊,只有在NEVERDIE 中国链接上可参与。\nhttps://neverdie.io/ch.html",
      "json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"https://neverdie.io/ch.html\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "heha37",
      "parent_permlink": "5e2gjy",
      "permlink": "re-heha37-5e2gjy-20170724t090531901z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-24T09:05:33",
  "trx_id": "c88f2b45f96886dcb0cebce5dcf37f0f44a11699",
  "trx_in_block": 7,
  "virtual_op": 0
}
2017/07/21 06:27:45
authormaxtill94
body你的文已看完,我已申请关注了,我也写了第一篇文,有空请阅下~ 个人认为NEVERDIE ICO 也不错,在我个人热帖里,Neverdie.com https://steemit.com/cn/@maxtill94/neverdie-ico-erc20-ico
json metadata{"tags":["cn"],"links":["https://steemit.com/cn/@maxtill94/neverdie-ico-erc20-ico"],"app":"steemit/0.1"}
parent authorheha37
parent permlink4dqlkh
permlinkre-heha37-4dqlkh-20170721t062743235z
title
Transaction InfoBlock #13869926/Trx bd0fb0b4bb2139a39a4566d8b29644205c4c09dc
View Raw JSON Data
{
  "block": 13869926,
  "op": [
    "comment",
    {
      "author": "maxtill94",
      "body": "你的文已看完,我已申请关注了,我也写了第一篇文,有空请阅下~\n个人认为NEVERDIE ICO 也不错,在我个人热帖里,Neverdie.com\nhttps://steemit.com/cn/@maxtill94/neverdie-ico-erc20-ico",
      "json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"https://steemit.com/cn/@maxtill94/neverdie-ico-erc20-ico\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "heha37",
      "parent_permlink": "4dqlkh",
      "permlink": "re-heha37-4dqlkh-20170721t062743235z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-21T06:27:45",
  "trx_id": "bd0fb0b4bb2139a39a4566d8b29644205c4c09dc",
  "trx_in_block": 1,
  "virtual_op": 0
}
2017/07/21 06:15:42
authormaxtill94
body你的文已看完,我已申请关注了,我也写了第一篇文,有空请阅下~ 个人认为NEVERDIE ICO 也不错,在我个人热帖里,Neverdie.com https://steemit.com/cn/@maxtill94/neverdie-ico-erc20-ico
json metadata{"tags":["cn"],"links":["https://steemit.com/cn/@maxtill94/neverdie-ico-erc20-ico"],"app":"steemit/0.1"}
parent authorheha37
parent permlink4dqlkh
permlinkre-heha37-4dqlkh-20170721t061541224z
title
Transaction InfoBlock #13869685/Trx 6c430232b74bcbe83e5e8cd4fc764510d3a4c418
View Raw JSON Data
{
  "block": 13869685,
  "op": [
    "comment",
    {
      "author": "maxtill94",
      "body": "你的文已看完,我已申请关注了,我也写了第一篇文,有空请阅下~\n个人认为NEVERDIE ICO 也不错,在我个人热帖里,Neverdie.com\nhttps://steemit.com/cn/@maxtill94/neverdie-ico-erc20-ico",
      "json_metadata": "{\"tags\":[\"cn\"],\"links\":[\"https://steemit.com/cn/@maxtill94/neverdie-ico-erc20-ico\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "heha37",
      "parent_permlink": "4dqlkh",
      "permlink": "re-heha37-4dqlkh-20170721t061541224z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-21T06:15:42",
  "trx_id": "6c430232b74bcbe83e5e8cd4fc764510d3a4c418",
  "trx_in_block": 2,
  "virtual_op": 0
}
2017/07/20 10:16:39
idfollow
json["follow",{"follower":"heha37","following":"cryptoctopus","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #13845743/Trx 4fedfe3712122cf379a8d733d85686486e950fe2
View Raw JSON Data
{
  "block": 13845743,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"cryptoctopus\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-20T10:16:39",
  "trx_id": "4fedfe3712122cf379a8d733d85686486e950fe2",
  "trx_in_block": 7,
  "virtual_op": 0
}
heha37followed @joseph
2017/07/15 15:17:48
idfollow
json["follow",{"follower":"heha37","following":"joseph","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #13707816/Trx ddbb6eb115d4a68d7518ab86371e2cc1d90e27df
View Raw JSON Data
{
  "block": 13707816,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"joseph\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-15T15:17:48",
  "trx_id": "ddbb6eb115d4a68d7518ab86371e2cc1d90e27df",
  "trx_in_block": 18,
  "virtual_op": 0
}
2017/07/12 11:38:03
idfollow
json["follow",{"follower":"heha37","following":"trueflip","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #13617170/Trx f2c296fa450bf77eb4820f30f3313d4e9b73272c
View Raw JSON Data
{
  "block": 13617170,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"trueflip\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-12T11:38:03",
  "trx_id": "f2c296fa450bf77eb4820f30f3313d4e9b73272c",
  "trx_in_block": 3,
  "virtual_op": 0
}
emrekaykusuzupvoted (100.00%) @heha37 / 79uhs4
2017/07/05 08:40:06
authorheha37
permlink79uhs4
voteremrekaykusuz
weight10000 (100.00%)
Transaction InfoBlock #13412643/Trx 5330faa4179985bd3ddd9aab87481eb77bba6b53
View Raw JSON Data
{
  "block": 13412643,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "79uhs4",
      "voter": "emrekaykusuz",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-05T08:40:06",
  "trx_id": "5330faa4179985bd3ddd9aab87481eb77bba6b53",
  "trx_in_block": 29,
  "virtual_op": 0
}
heha37upvoted (100.00%) @heha37 / 79uhs4
2017/07/05 08:37:24
authorheha37
permlink79uhs4
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #13412589/Trx 5163f224f6af3d195ad467312918d32d409f1e3c
View Raw JSON Data
{
  "block": 13412589,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "79uhs4",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-05T08:37:24",
  "trx_id": "5163f224f6af3d195ad467312918d32d409f1e3c",
  "trx_in_block": 7,
  "virtual_op": 0
}
heha37published a new post: 79uhs4
2017/07/05 08:37:24
authorheha37
body今天在公司参加研发的内部交流会,大家张口一个脚手架,闭口一个脚手架,我此时的内心是崩溃的,脚手架是什么鬼,写程序还需要爬架子摸高吗?交流会上不好意思问,只好私下去给自己科普一下,经过一阵忙活,爬上了脚手架,站在脚手架上略有感悟。 ------- 从Wikipedia上摘录一段解释: > Scaffolding is a meta-programming method of building database-backed software applications. It is a technique supported by some model-view-controller frameworks, in which the programmer may write a specification that describes how the application database may be used. The compiler uses this specification to generate code that the application can use to create, read, update and delete database entries, effectively treating the template as a "scaffold" on which to build a more powerful application. 中文翻译意思是: > “脚手架”是一种用于构建以数据库为基础的应用的元编程方法。一些MVC框架就支持这种技术,程序员只需要写出一份配置模版,或者说是规格说明书,来描述应用的数据库会被怎样应用。之后编译器用这份配置来生成能够进行相应增删改查数据库的程序。这种模版就被我们叫做“脚手架”,在“脚手架”的基础上可以更方便地构建更加强有力的应用。 通过上面的解释可以明白,脚手架其实就是在做事之前先搭个初始骨架,或者直接用一个现成的框架。也就是工程师不再单纯通过手写代码来完成业务,还会通过代码去生成代码来完成一些事情。 上面所说的“通过代码生成代码”其实就是元编程。元是什么,英文是“meta”,可以这样理解这个词,一个名词加上了“meta”之后就拥有了自我意识,可以跳出自我,类似置身事外、上帝视角地审视自己,在自己的思考之上进行思考。比如元小说,就是小说之上的小说,也就是小说中的主人公去创作小说,或者小说中的人物自我意识觉醒,知道自己身在故事的情节中。 那么很自然地去理解元编程,就是编写出代码之上的代码,能够操控代码的代码。想象一下,你的代码拥有了自我意识,他能够思考自身的想法和行为,然后通过思考结果再去动态地改变自己的动机、行为,也就是拥有自我的检查和控制能力。是不是对你来说就省去很多事情,并且代码对你来说也不是黑盒子了,你能掌握他自身的信息,还能动态地去改变一些事情。 其实这种所谓的自我意识,就是很多编程语言中提供的自省(introspection)、反射(reflect)特性,像Python、Ruby、Lisp就有,Lisp支持元编程更纯粹,理念就是代码也是数据。 很多事情都是相通的,对人来说也有元这个概念,人本身就有元能力,也就是自我意识,你能够思考自己的思考, 可以置身事外冷静地看自己的经历,能够检查自己的情绪、行为,然后控制自己的情绪和行为。 说个元能力应用的情景,到了该去跑步的时间,你的大脑中就会有个声音,“你还可以休息一会儿哦”: * 元能力强的人:“滚开,我要去跑步” * 元能力弱的人:“好的” 其实说到这里,我不知道怎么突然想起了一句话:“好生意顺人性,卓越者逆人性”。 好了,以上这些就是我爬上脚手架之后的所思所想。
json metadata{"tags":["cn","meta","scaffolding"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink79uhs4
title写在爬上脚手架之后
Transaction InfoBlock #13412589/Trx 5163f224f6af3d195ad467312918d32d409f1e3c
View Raw JSON Data
{
  "block": 13412589,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "今天在公司参加研发的内部交流会,大家张口一个脚手架,闭口一个脚手架,我此时的内心是崩溃的,脚手架是什么鬼,写程序还需要爬架子摸高吗?交流会上不好意思问,只好私下去给自己科普一下,经过一阵忙活,爬上了脚手架,站在脚手架上略有感悟。\n\n-------\n\n从Wikipedia上摘录一段解释:\n> Scaffolding is a meta-programming method of building database-backed software applications. It is a technique supported by some model-view-controller frameworks, in which the programmer may write a specification that describes how the application database may be used. The compiler uses this specification to generate code that the application can use to create, read, update and delete database entries, effectively treating the template as a \"scaffold\" on which to build a more powerful application.\n\n中文翻译意思是:\n\n> “脚手架”是一种用于构建以数据库为基础的应用的元编程方法。一些MVC框架就支持这种技术,程序员只需要写出一份配置模版,或者说是规格说明书,来描述应用的数据库会被怎样应用。之后编译器用这份配置来生成能够进行相应增删改查数据库的程序。这种模版就被我们叫做“脚手架”,在“脚手架”的基础上可以更方便地构建更加强有力的应用。\n\n通过上面的解释可以明白,脚手架其实就是在做事之前先搭个初始骨架,或者直接用一个现成的框架。也就是工程师不再单纯通过手写代码来完成业务,还会通过代码去生成代码来完成一些事情。\n\n上面所说的“通过代码生成代码”其实就是元编程。元是什么,英文是“meta”,可以这样理解这个词,一个名词加上了“meta”之后就拥有了自我意识,可以跳出自我,类似置身事外、上帝视角地审视自己,在自己的思考之上进行思考。比如元小说,就是小说之上的小说,也就是小说中的主人公去创作小说,或者小说中的人物自我意识觉醒,知道自己身在故事的情节中。\n\n那么很自然地去理解元编程,就是编写出代码之上的代码,能够操控代码的代码。想象一下,你的代码拥有了自我意识,他能够思考自身的想法和行为,然后通过思考结果再去动态地改变自己的动机、行为,也就是拥有自我的检查和控制能力。是不是对你来说就省去很多事情,并且代码对你来说也不是黑盒子了,你能掌握他自身的信息,还能动态地去改变一些事情。\n\n其实这种所谓的自我意识,就是很多编程语言中提供的自省(introspection)、反射(reflect)特性,像Python、Ruby、Lisp就有,Lisp支持元编程更纯粹,理念就是代码也是数据。\n\n很多事情都是相通的,对人来说也有元这个概念,人本身就有元能力,也就是自我意识,你能够思考自己的思考, 可以置身事外冷静地看自己的经历,能够检查自己的情绪、行为,然后控制自己的情绪和行为。\n\n说个元能力应用的情景,到了该去跑步的时间,你的大脑中就会有个声音,“你还可以休息一会儿哦”:\n* 元能力强的人:“滚开,我要去跑步”\n* 元能力弱的人:“好的”\n\n其实说到这里,我不知道怎么突然想起了一句话:“好生意顺人性,卓越者逆人性”。\n\n好了,以上这些就是我爬上脚手架之后的所思所想。",
      "json_metadata": "{\"tags\":[\"cn\",\"meta\",\"scaffolding\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "79uhs4",
      "title": "写在爬上脚手架之后"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-05T08:37:24",
  "trx_id": "5163f224f6af3d195ad467312918d32d409f1e3c",
  "trx_in_block": 7,
  "virtual_op": 0
}
2017/07/03 07:26:57
authorcheetah
bodyHi! I am a robot. I just upvoted you! I found similar content that readers might be interested in: http://www.67.com/
json metadata
parent authorheha37
parent permlink2krm8h
permlinkcheetah-re-heha372krm8h
title
Transaction InfoBlock #13353632/Trx 539977fb0577869889127c8db5f1bf2c9062c65f
View Raw JSON Data
{
  "block": 13353632,
  "op": [
    "comment",
    {
      "author": "cheetah",
      "body": "Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:\nhttp://www.67.com/",
      "json_metadata": "",
      "parent_author": "heha37",
      "parent_permlink": "2krm8h",
      "permlink": "cheetah-re-heha372krm8h",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-03T07:26:57",
  "trx_id": "539977fb0577869889127c8db5f1bf2c9062c65f",
  "trx_in_block": 10,
  "virtual_op": 0
}
cheetahupvoted (1.00%) @heha37 / 2krm8h
2017/07/03 07:26:51
authorheha37
permlink2krm8h
votercheetah
weight100 (1.00%)
Transaction InfoBlock #13353630/Trx 6f1a44441b77863ed90d4bbcb736f82466a52561
View Raw JSON Data
{
  "block": 13353630,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "2krm8h",
      "voter": "cheetah",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-03T07:26:51",
  "trx_id": "6f1a44441b77863ed90d4bbcb736f82466a52561",
  "trx_in_block": 14,
  "virtual_op": 0
}
heha37published a new post: 2krm8h
2017/07/03 07:25:45
authorheha37
body@@ -389,11 +389,8 @@ %E4%B8%8B%E4%B8%8B%E9%9D%A2%E7%9A%84 -%E7%AC%AC%E5%9B%9B%E4%B8%AA %E5%9B%BE%E7%89%87%EF%BC%8C%E8%BF%99 @@ -478,16 +478,90 @@ %E4%BA%86%E4%B8%80%E4%BA%9B%E5%85%B1%E9%B8%A3%E3%80%82%0A%0A +!%5Bboatphoto%5D(https://shootertt.github.io/uploads/boat_photo-e64c05.jpeg)%0A%0A %E6%97%A2%E7%84%B6%E5%AF%B9%E6%AF%94%E7%85%A7%E7%89%87%EF%BC%8C%E4%B8%BA
json metadata{"tags":["cn","painting"],"image":["https://shootertt.github.io/uploads/Screen%20Shot%202017-06-30%20at%209.05.35%20AM.png","https://shootertt.github.io/uploads/boat1.jpeg","https://shootertt.github.io/uploads/boat_photo-e64c05.jpeg","https://shootertt.github.io/uploads/real.jpg","https://shootertt.github.io/uploads/art.png","https://shootertt.github.io/uploads/tree1.jpeg","https://shootertt.github.io/uploads/tree2.jpeg","https://shootertt.github.io/uploads/house1.jpeg","https://shootertt.github.io/uploads/house2.jpeg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink2krm8h
title彼得·多伊格的真实和幻象
Transaction InfoBlock #13353608/Trx eb538b6655ae1c6a0aba0844b24f0d581945ebdb
View Raw JSON Data
{
  "block": 13353608,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -389,11 +389,8 @@\n %E4%B8%8B%E4%B8%8B%E9%9D%A2%E7%9A%84\n-%E7%AC%AC%E5%9B%9B%E4%B8%AA\n %E5%9B%BE%E7%89%87%EF%BC%8C%E8%BF%99\n@@ -478,16 +478,90 @@\n %E4%BA%86%E4%B8%80%E4%BA%9B%E5%85%B1%E9%B8%A3%E3%80%82%0A%0A\n+!%5Bboatphoto%5D(https://shootertt.github.io/uploads/boat_photo-e64c05.jpeg)%0A%0A\n %E6%97%A2%E7%84%B6%E5%AF%B9%E6%AF%94%E7%85%A7%E7%89%87%EF%BC%8C%E4%B8%BA\n",
      "json_metadata": "{\"tags\":[\"cn\",\"painting\"],\"image\":[\"https://shootertt.github.io/uploads/Screen%20Shot%202017-06-30%20at%209.05.35%20AM.png\",\"https://shootertt.github.io/uploads/boat1.jpeg\",\"https://shootertt.github.io/uploads/boat_photo-e64c05.jpeg\",\"https://shootertt.github.io/uploads/real.jpg\",\"https://shootertt.github.io/uploads/art.png\",\"https://shootertt.github.io/uploads/tree1.jpeg\",\"https://shootertt.github.io/uploads/tree2.jpeg\",\"https://shootertt.github.io/uploads/house1.jpeg\",\"https://shootertt.github.io/uploads/house2.jpeg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "2krm8h",
      "title": "彼得·多伊格的真实和幻象"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-03T07:25:45",
  "trx_id": "eb538b6655ae1c6a0aba0844b24f0d581945ebdb",
  "trx_in_block": 16,
  "virtual_op": 0
}
heha37followed @julee
2017/07/03 05:46:54
idfollow
json["follow",{"follower":"heha37","following":"julee","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #13351633/Trx 2a26d438e1fccacade7b76de11444aa7916d7384
View Raw JSON Data
{
  "block": 13351633,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"julee\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-03T05:46:54",
  "trx_id": "2a26d438e1fccacade7b76de11444aa7916d7384",
  "trx_in_block": 14,
  "virtual_op": 0
}
2017/07/03 05:46:48
idfollow
json["follow",{"follower":"heha37","following":"crypto-p","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #13351631/Trx 54a0a9dc1eba5d6dfc7ba2be47756c1d762c983d
View Raw JSON Data
{
  "block": 13351631,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"crypto-p\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-07-03T05:46:48",
  "trx_id": "54a0a9dc1eba5d6dfc7ba2be47756c1d762c983d",
  "trx_in_block": 21,
  "virtual_op": 0
}
heha37upvoted (100.00%) @heha37 / 2krm8h
2017/06/30 06:07:09
authorheha37
permlink2krm8h
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #13265666/Trx faa8f467ee3d8ee5d35ed403adb27304c6dfea3a
View Raw JSON Data
{
  "block": 13265666,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "2krm8h",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-30T06:07:09",
  "trx_id": "faa8f467ee3d8ee5d35ed403adb27304c6dfea3a",
  "trx_in_block": 14,
  "virtual_op": 0
}
heha37published a new post: 2krm8h
2017/06/30 06:07:09
authorheha37
body上周末去和我家亲爱的去看了彼得·多伊格的画展,有了一些想法,和大家分享交流一下。 先贴出两幅画作: ![boat1](https://shootertt.github.io/uploads/Screen%20Shot%202017-06-30%20at%209.05.35%20AM.png) ![boat2](https://shootertt.github.io/uploads/boat1.jpeg) 上面两幅画作,第一眼看过去其实并不太讨人喜欢,感觉乱七八糟的,不知道画家在表达什么意思。这个时候我会问自己几个问题: 1. what:画的是什么 2. why:为什么这么画 3. how:怎么去理解啊(我TMD看不懂) 要想看明白需要先了解一下彼得的创作方式:他画的东西是他见过的照片或者是他拍摄下来的照片,也就是他在创作的时候,眼前会放着一幅照片。所以看一下下面的第四个图片,这就是那个对比的照片,再回头去看前面三个画作,是不是就有了一点儿沉下去的感觉,那个舟慢慢地漂浮上来。这个时候你可能就会理解画家的用意,可能就会有了自己的一点理解,有了一些共鸣。 既然对比照片,为什么要这么画呢,为什么不画得更像一点儿呢。其实有一种流派叫超写实主义(Hyperrealism),下面这幅画就是其代表画作,跟照片一样真实,甚至超越照片,但是我觉得这只是技法上的东西,就是人可以画出跟机器媲美的画作,纯粹的炫技。人之所以为人,肯定有跟机器不一样的东西。 ![real](https://shootertt.github.io/uploads/real.jpg) 每个人看到的世界都是不同的,我看到的太阳,和你看到的太阳,我们无法去验证它们是一致的,可能它们就不是完美一致的,你我心中的太阳可能会有那么一点点不同。 但是当你说太阳的时候,我是知道你在说什么的。就像是在一幅画了很多动物的画作中找猴子,你我会很轻松地挑出其中的猴子,既然你我对猴子的认知不同,那我们是怎样分辨猴子的呢?希腊哲学中有个理论叫共相(universal),就是普遍共识,类似程序中的类的概念。就是存在一个完美的猴子,它有任何猴子的特点,但是没有任何一个单个猴子的缺点,然后其他猴子都是无限接近于这个完美的猴子,我们认知里有一个完美的猴子,所以我们能就猴子的问题达成共识。 所以那个完美的猴子便是真实,其他猴子都是其模仿品,都是幻象,可能好的画作都是在接近真实,脱离幻象,我觉得彼得就是在接近认知的真实,下面我画了个图来表达一下这个想法: ![art](https://shootertt.github.io/uploads/art.png) 彼得的画作对比鲜明,突出那些给他带来强烈刺激的、使他记忆深刻难以释怀的元素和感觉。就比如前面画作中白色的舟;下面这个画作绿意安然,浓绿充盈整个画面,以至于深色皮肤的人也融入其中,变得透明。 ![tree1](https://shootertt.github.io/uploads/tree1.jpeg) ![tree2](https://shootertt.github.io/uploads/tree2.jpeg) 下面这个画作是透过密林看到一栋建筑物,给我的感觉是画家对这栋建筑物在森林中突然出现感到突兀,感觉不自然,有一种静静的偷窥感。 ![house1](https://shootertt.github.io/uploads/house1.jpeg) ![house2](https://shootertt.github.io/uploads/house2.jpeg) 也许彼得就是在画那些印象深刻的记忆,突出重要的细节,把那时的状态、情景描绘出来,所以很多人才会对彼得的画作产生共鸣,感觉被带入了当时的情景,因为产生刺激的不是单纯的视觉效果,而是根植与大脑中的记忆、情景。 当你我回忆过去,不会留意每一个细节,而是在意那些最鲜明的东西和场景,一抹云,一道闪电或是一块亮闪闪的表。 后记:看完画展,我家亲爱的话也多了起来,她说这个人的画给人静静的、有一种置身事外的感觉,并且开始谈起对她来说记忆深刻的情景...(这些情景就不告诉各位了)
json metadata{"tags":["cn","painting"],"image":["https://shootertt.github.io/uploads/Screen%20Shot%202017-06-30%20at%209.05.35%20AM.png","https://shootertt.github.io/uploads/boat1.jpeg","https://shootertt.github.io/uploads/real.jpg","https://shootertt.github.io/uploads/art.png","https://shootertt.github.io/uploads/tree1.jpeg","https://shootertt.github.io/uploads/tree2.jpeg","https://shootertt.github.io/uploads/house1.jpeg","https://shootertt.github.io/uploads/house2.jpeg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink2krm8h
title彼得·多伊格的真实和幻象
Transaction InfoBlock #13265666/Trx faa8f467ee3d8ee5d35ed403adb27304c6dfea3a
View Raw JSON Data
{
  "block": 13265666,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "上周末去和我家亲爱的去看了彼得·多伊格的画展,有了一些想法,和大家分享交流一下。\n\n先贴出两幅画作:\n\n![boat1](https://shootertt.github.io/uploads/Screen%20Shot%202017-06-30%20at%209.05.35%20AM.png)\n\n![boat2](https://shootertt.github.io/uploads/boat1.jpeg)\n\n上面两幅画作,第一眼看过去其实并不太讨人喜欢,感觉乱七八糟的,不知道画家在表达什么意思。这个时候我会问自己几个问题:\n1. what:画的是什么\n2. why:为什么这么画\n3. how:怎么去理解啊(我TMD看不懂)\n\n要想看明白需要先了解一下彼得的创作方式:他画的东西是他见过的照片或者是他拍摄下来的照片,也就是他在创作的时候,眼前会放着一幅照片。所以看一下下面的第四个图片,这就是那个对比的照片,再回头去看前面三个画作,是不是就有了一点儿沉下去的感觉,那个舟慢慢地漂浮上来。这个时候你可能就会理解画家的用意,可能就会有了自己的一点理解,有了一些共鸣。\n\n既然对比照片,为什么要这么画呢,为什么不画得更像一点儿呢。其实有一种流派叫超写实主义(Hyperrealism),下面这幅画就是其代表画作,跟照片一样真实,甚至超越照片,但是我觉得这只是技法上的东西,就是人可以画出跟机器媲美的画作,纯粹的炫技。人之所以为人,肯定有跟机器不一样的东西。\n\n![real](https://shootertt.github.io/uploads/real.jpg)\n\n\n每个人看到的世界都是不同的,我看到的太阳,和你看到的太阳,我们无法去验证它们是一致的,可能它们就不是完美一致的,你我心中的太阳可能会有那么一点点不同。\n\n但是当你说太阳的时候,我是知道你在说什么的。就像是在一幅画了很多动物的画作中找猴子,你我会很轻松地挑出其中的猴子,既然你我对猴子的认知不同,那我们是怎样分辨猴子的呢?希腊哲学中有个理论叫共相(universal),就是普遍共识,类似程序中的类的概念。就是存在一个完美的猴子,它有任何猴子的特点,但是没有任何一个单个猴子的缺点,然后其他猴子都是无限接近于这个完美的猴子,我们认知里有一个完美的猴子,所以我们能就猴子的问题达成共识。\n\n所以那个完美的猴子便是真实,其他猴子都是其模仿品,都是幻象,可能好的画作都是在接近真实,脱离幻象,我觉得彼得就是在接近认知的真实,下面我画了个图来表达一下这个想法:\n\n![art](https://shootertt.github.io/uploads/art.png)\n\n彼得的画作对比鲜明,突出那些给他带来强烈刺激的、使他记忆深刻难以释怀的元素和感觉。就比如前面画作中白色的舟;下面这个画作绿意安然,浓绿充盈整个画面,以至于深色皮肤的人也融入其中,变得透明。\n\n![tree1](https://shootertt.github.io/uploads/tree1.jpeg)\n\n![tree2](https://shootertt.github.io/uploads/tree2.jpeg)\n\n下面这个画作是透过密林看到一栋建筑物,给我的感觉是画家对这栋建筑物在森林中突然出现感到突兀,感觉不自然,有一种静静的偷窥感。\n\n![house1](https://shootertt.github.io/uploads/house1.jpeg)\n\n![house2](https://shootertt.github.io/uploads/house2.jpeg)\n\n也许彼得就是在画那些印象深刻的记忆,突出重要的细节,把那时的状态、情景描绘出来,所以很多人才会对彼得的画作产生共鸣,感觉被带入了当时的情景,因为产生刺激的不是单纯的视觉效果,而是根植与大脑中的记忆、情景。\n\n\n当你我回忆过去,不会留意每一个细节,而是在意那些最鲜明的东西和场景,一抹云,一道闪电或是一块亮闪闪的表。\n\n后记:看完画展,我家亲爱的话也多了起来,她说这个人的画给人静静的、有一种置身事外的感觉,并且开始谈起对她来说记忆深刻的情景...(这些情景就不告诉各位了)",
      "json_metadata": "{\"tags\":[\"cn\",\"painting\"],\"image\":[\"https://shootertt.github.io/uploads/Screen%20Shot%202017-06-30%20at%209.05.35%20AM.png\",\"https://shootertt.github.io/uploads/boat1.jpeg\",\"https://shootertt.github.io/uploads/real.jpg\",\"https://shootertt.github.io/uploads/art.png\",\"https://shootertt.github.io/uploads/tree1.jpeg\",\"https://shootertt.github.io/uploads/tree2.jpeg\",\"https://shootertt.github.io/uploads/house1.jpeg\",\"https://shootertt.github.io/uploads/house2.jpeg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "2krm8h",
      "title": "彼得·多伊格的真实和幻象"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-30T06:07:09",
  "trx_id": "faa8f467ee3d8ee5d35ed403adb27304c6dfea3a",
  "trx_in_block": 14,
  "virtual_op": 0
}
heha37published a new post: select-for-update
2017/06/29 10:39:39
authorheha37
body@@ -1712,23 +1712,25 @@ %E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%A6%82%E4%B8%8B:%0A - %60%60%60 +%60%60%60python %0Afrom os @@ -1906,20 +1906,16 @@ ...%0A - %60%60%60%0A%0A%E7%84%B6%E5%90%8E%E5%9C%A8 @@ -2227,23 +2227,25 @@ DB%E6%93%8D%E4%BD%9C%E6%BA%90%E7%A0%81:%0A - %60%60%60 +%60%60%60python %0A@oslo_d @@ -3265,20 +3265,16 @@ ccount)%0A - %60%60%60%0A%0A##
json metadata{"tags":["cn","python","mysql"],"image":["https://shootertt.github.io/uploads/galera.png"],"links":["https://github.com/ShooterTT/gringotts","https://www.percona.com/blog/2015/06/08/maxscale-a-new-tool-to-solve-your-mysql-scalability-problems/","http://lists.openstack.org/pipermail/openstack-dev/2015-February/056007.html","http://www.joinfu.com/2015/01/understanding-reservations-concurrency-locking-in-nova/#footnote-3","https://www.percona.com/blog/2013/03/03/investigating-replication-latency-in-percona-xtradb-cluster/","https://www.percona.com/blog/2012/11/20/understanding-multi-node-writing-conflict-metrics-in-percona-xtradb-cluster-and-galera/","http://preshing.com/20120612/an-introduction-to-lock-free-programming/","http://www.sebastien-han.fr/blog/2012/04/01/mysql-multi-master-replication-with-galera/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlinkselect-for-update
title数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
Transaction InfoBlock #13242333/Trx 797a36f51b70a2c3737da90fb7bafee11f2d2008
View Raw JSON Data
{
  "block": 13242333,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -1712,23 +1712,25 @@\n %E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%A6%82%E4%B8%8B:%0A\n-    %60%60%60\n+%60%60%60python\n %0Afrom os\n@@ -1906,20 +1906,16 @@\n     ...%0A\n-    \n %60%60%60%0A%0A%E7%84%B6%E5%90%8E%E5%9C%A8\n@@ -2227,23 +2227,25 @@\n DB%E6%93%8D%E4%BD%9C%E6%BA%90%E7%A0%81:%0A\n-    %60%60%60\n+%60%60%60python\n %0A@oslo_d\n@@ -3265,20 +3265,16 @@\n ccount)%0A\n-    \n %60%60%60%0A%0A## \n",
      "json_metadata": "{\"tags\":[\"cn\",\"python\",\"mysql\"],\"image\":[\"https://shootertt.github.io/uploads/galera.png\"],\"links\":[\"https://github.com/ShooterTT/gringotts\",\"https://www.percona.com/blog/2015/06/08/maxscale-a-new-tool-to-solve-your-mysql-scalability-problems/\",\"http://lists.openstack.org/pipermail/openstack-dev/2015-February/056007.html\",\"http://www.joinfu.com/2015/01/understanding-reservations-concurrency-locking-in-nova/#footnote-3\",\"https://www.percona.com/blog/2013/03/03/investigating-replication-latency-in-percona-xtradb-cluster/\",\"https://www.percona.com/blog/2012/11/20/understanding-multi-node-writing-conflict-metrics-in-percona-xtradb-cluster-and-galera/\",\"http://preshing.com/20120612/an-introduction-to-lock-free-programming/\",\"http://www.sebastien-han.fr/blog/2012/04/01/mysql-multi-master-replication-with-galera/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "select-for-update",
      "title": "数据库写操作弃用“SELECT ... FOR UPDATE”解决方案"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-29T10:39:39",
  "trx_id": "797a36f51b70a2c3737da90fb7bafee11f2d2008",
  "trx_in_block": 14,
  "virtual_op": 0
}
heha37upvoted (100.00%) @heha37 / select-for-update
2017/06/29 10:36:42
authorheha37
permlinkselect-for-update
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #13242274/Trx 224083ee5863041751c6df22f3899fffe638e19f
View Raw JSON Data
{
  "block": 13242274,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "select-for-update",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-29T10:36:42",
  "trx_id": "224083ee5863041751c6df22f3899fffe638e19f",
  "trx_in_block": 5,
  "virtual_op": 0
}
heha37published a new post: select-for-update
2017/06/29 10:36:42
authorheha37
body## 问题阐述 Mysql Galera集群是迄今OpenStack服务最流行的Mysql部署方案,它基于Mysql/InnoDB,我的OpenStack部署方式从原来的主从复制转换到Galera的多主模式。 Galera虽然有很多好处,如任何时刻任何节点都可读可写,无复制延迟,同步复制,行级复制,但是Galera存在一个问题,也可以说是在实现 真正的多主可写上的折衷权衡,也就是这个问题导致在代码的数据库层的操作需要弃用写锁,下面我说一下这个问题。 这个问题是Mysql Galera集群不支持跨节点对表加锁,也就是当OpenStack一个组件有两个会话分布在两个Mysql节点上同时写入一条数据,其中一个会话会遇到 死锁的情况,也就是得到deadlock的错误,并且该情况在高并发的时候发生概率很高,在社区Nova,Neutron该情况的报告有很多。 这个行为其实是Galera预期的结果,它是由乐观锁并发控制机制引起的,当发生多个事务进行写操作的时候,乐观锁机制假设所有的修改都能 没有冲突地完成。如果两个事务同时修改同一个数据,先commit的事务会成功,另一个会被拒绝,并重新开始运行整个事务。 在事务发生的起始节点,它可以获取到所有它需要的锁,但是它不知道其他节点的情况,所以它采用乐观锁机制把事务(在Galera中叫writes et)广播到所有其他节点上,看在其他节点上是否能提交成功。这个writeset会在每个节点上进行验证测试,来决定该writeset是否被接受, 如果检验失败,这个writeset就会被抛弃,然后最开始的事务也会被回滚;如果检验成功,事务就被提交,writeset也被应用到其他节点上。 这个过程如下图所示: ![galera.png](https://shootertt.github.io/uploads/galera.png) 在Python的SQLAlchemy库中,有一个“with_lockmode('update')”语句,这个代表SQL语句中的“SELECT ... FOR UPDATE”,在我参与过的[计费项目][2]和社区的一些项目的代码中有大量的该结构,由于写锁不能在集群中同步,所以这个语句在Mysql集群中就没有得到它应有的效果,也就是在语义上有问题,但是最后Galera会通过报deadlock错误,只让一个commit成功,来保证Mysql集群的ACID性。 ## 一些解决方法 * 把请求发往一个节点,这个在HAProxy中就可以配置,只设定一个节点为master,其余节点为backup,HAProxy会在master失效的时候 自动切换到某一个backup上,这个也 是很多解决方案目前使用的方法,HAProxy配置如下: ``` server xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx:3306 check server xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx:3306 check backup server xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx:3306 check backup ``` * 对OpenStack的所有Mysql操作做读写分离,写操作只在master节点上,读操作在所有节点上做负载均衡。OpenStack没有原生支持,但 是有一个开源软件可以使用,[maxscale][3]。 ## 终极解决方法 上面的解决方法只是一些workaround,目前情况下最终极的解决方法是使用lock-free的方法来对数据库进行操作,也就是无锁的方式,这就 需要对代码进行修改,现在Nova,Neutron,Gnocchi等项目已经对其进行了修改。 首先得有一个retry机制,也就是让操作执行在一个循环中,一旦捕获到deadlock的error就将操作重新进行,这个在OpenStack的oslo.db中已 经提供了相应的方法叫wrap_db_retry,是一个Python装饰器,使用方法如下: ``` from oslo_db import api as oslo_db_api @oslo_db_api.wrap_db_retry(max_retries=5, retry_on_deadlock=True, retry_on_request=True) def db_operations(): ... ``` 然后在这个循环之中我们使用叫做"Compare And Swap(CAS)"的无锁方法来完成update操作,CAS是最先在CPU中使用的,CAS说白了就是先比较,再修改,在进行UPDATE操作之前,我们先SELEC T出来一些数据,我们叫做期望数据,在UPDATE的时候要去比对这些期望数据,如果期望数据有变化,说明有另一个会话对该行进行了修改, 那么我们就不能继续进行修改操作了,只能报错,然后retry;如果没变化,我们就可以将修改操作执行下去。该行为体现在SQL语句中就是在 UPDATE的时候加上WHERE语句,如"UPDATE ... WHERE ..."。 给出一个[计费项目][4]中修改用户等级的DB操作源码: ``` @oslo_db_api.wrap_db_retry(max_retries=5, retry_on_deadlock=True, retry_on_request=True) def change_account_level(self, context, user_id, level, project_id=None): session = get_session() with session.begin(): # 在会话刚开始的时候,需要先SELECT出来该account的数据,也就是期望数据 account = session.query(sa_models.Account).\ filter_by(user_id=user_id).\ one()] # 在执行UPDATE操作的时候需要比对期望数据,user_id和level,如果它们变化了,那么rows_update就会被赋值为0 ,就会走入retry的逻辑 params = {'level': level} rows_update = session.query(sa_models.Account).\ filter_by(user_id=user_id).\ filter_by(level=account.level).\ update(params, synchronize_session='evaluate') # 修改失败,报出RetryRequest的错误,使上面的装饰器抓获该错误,然后重新运行逻辑 if not rows_update: LOG.debug('The row was updated in a concurrent transaction, ' 'we will fetch another one') raise db_exc.RetryRequest(exception.AccountLevelUpdateFailed()) return self._row_to_db_account_model(account) ``` ## 数据的一致性问题 该问题在[OpenStack邮件列表][5]中有说过,虽然Galera是生成同步的,也就是写入数据同步到整个集群非常快,用时非常短,但既然是分布式系 统,本质上还是需要一些时间的,尤其是在负载很大的时候,同步不及时会很严重。 所以Galera只是虚拟同步,不是直接同步,也就是会存在一些gap时间段,无法读到写入的数据,Galera提供了一个配置项,叫做wsrep_sync_ wait,它的默认值是0,如果赋值为1,就能够保证读写的一致性,但是会带来延迟问题。 ## Appendix 1. [understanding reservations concurrency locking in nova][6] 2. [investigating replication latency in percona xtradb cluster][7] 3. [understanding multi node writing conflict metrics in percona xtradb cluster and galera][8] 4. [an introduction to lock-free programming][9] 5. [mysql multi master replication with galera][10] [1]: /img/bVP3zo [2]: https://github.com/ShooterTT/gringotts [3]: https://www.percona.com/blog/2015/06/08/maxscale-a-new-tool-to-solve-your-mysql-scalability-problems/ [4]: https://github.com/ShooterTT/gringotts [5]: http://lists.openstack.org/pipermail/openstack-dev/2015-February/056007.html [6]: http://www.joinfu.com/2015/01/understanding-reservations-concurrency-locking-in-nova/#footnote-3 [7]: https://www.percona.com/blog/2013/03/03/investigating-replication-latency-in-percona-xtradb-cluster/ [8]: https://www.percona.com/blog/2012/11/20/understanding-multi-node-writing-conflict-metrics-in-percona-xtradb-cluster-and-galera/ [9]: http://preshing.com/20120612/an-introduction-to-lock-free-programming/ [10]: http://www.sebastien-han.fr/blog/2012/04/01/mysql-multi-master-replication-with-galera/
json metadata{"tags":["cn","python","mysql"],"users":["oslo"],"image":["https://shootertt.github.io/uploads/galera.png"],"links":["https://github.com/ShooterTT/gringotts","https://www.percona.com/blog/2015/06/08/maxscale-a-new-tool-to-solve-your-mysql-scalability-problems/","http://lists.openstack.org/pipermail/openstack-dev/2015-February/056007.html","http://www.joinfu.com/2015/01/understanding-reservations-concurrency-locking-in-nova/#footnote-3","https://www.percona.com/blog/2013/03/03/investigating-replication-latency-in-percona-xtradb-cluster/","https://www.percona.com/blog/2012/11/20/understanding-multi-node-writing-conflict-metrics-in-percona-xtradb-cluster-and-galera/","http://preshing.com/20120612/an-introduction-to-lock-free-programming/","http://www.sebastien-han.fr/blog/2012/04/01/mysql-multi-master-replication-with-galera/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlinkselect-for-update
title数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
Transaction InfoBlock #13242274/Trx 224083ee5863041751c6df22f3899fffe638e19f
View Raw JSON Data
{
  "block": 13242274,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "## 问题阐述\nMysql Galera集群是迄今OpenStack服务最流行的Mysql部署方案,它基于Mysql/InnoDB,我的OpenStack部署方式从原来的主从复制转换到Galera的多主模式。\n\nGalera虽然有很多好处,如任何时刻任何节点都可读可写,无复制延迟,同步复制,行级复制,但是Galera存在一个问题,也可以说是在实现 真正的多主可写上的折衷权衡,也就是这个问题导致在代码的数据库层的操作需要弃用写锁,下面我说一下这个问题。\n\n这个问题是Mysql Galera集群不支持跨节点对表加锁,也就是当OpenStack一个组件有两个会话分布在两个Mysql节点上同时写入一条数据,其中一个会话会遇到 死锁的情况,也就是得到deadlock的错误,并且该情况在高并发的时候发生概率很高,在社区Nova,Neutron该情况的报告有很多。\n\n这个行为其实是Galera预期的结果,它是由乐观锁并发控制机制引起的,当发生多个事务进行写操作的时候,乐观锁机制假设所有的修改都能 没有冲突地完成。如果两个事务同时修改同一个数据,先commit的事务会成功,另一个会被拒绝,并重新开始运行整个事务。 在事务发生的起始节点,它可以获取到所有它需要的锁,但是它不知道其他节点的情况,所以它采用乐观锁机制把事务(在Galera中叫writes et)广播到所有其他节点上,看在其他节点上是否能提交成功。这个writeset会在每个节点上进行验证测试,来决定该writeset是否被接受, 如果检验失败,这个writeset就会被抛弃,然后最开始的事务也会被回滚;如果检验成功,事务就被提交,writeset也被应用到其他节点上。 这个过程如下图所示:\n\n![galera.png](https://shootertt.github.io/uploads/galera.png)\n\n在Python的SQLAlchemy库中,有一个“with_lockmode('update')”语句,这个代表SQL语句中的“SELECT ... FOR UPDATE”,在我参与过的[计费项目][2]和社区的一些项目的代码中有大量的该结构,由于写锁不能在集群中同步,所以这个语句在Mysql集群中就没有得到它应有的效果,也就是在语义上有问题,但是最后Galera会通过报deadlock错误,只让一个commit成功,来保证Mysql集群的ACID性。\n\n## 一些解决方法\n* 把请求发往一个节点,这个在HAProxy中就可以配置,只设定一个节点为master,其余节点为backup,HAProxy会在master失效的时候 自动切换到某一个backup上,这个也\n是很多解决方案目前使用的方法,HAProxy配置如下:\n    ```\n    server xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx:3306 check\n        server xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx:3306 check backup\n        server xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx:3306 check backup\n    ```\n\n* 对OpenStack的所有Mysql操作做读写分离,写操作只在master节点上,读操作在所有节点上做负载均衡。OpenStack没有原生支持,但 是有一个开源软件可以使用,[maxscale][3]。\n\n## 终极解决方法\n上面的解决方法只是一些workaround,目前情况下最终极的解决方法是使用lock-free的方法来对数据库进行操作,也就是无锁的方式,这就 需要对代码进行修改,现在Nova,Neutron,Gnocchi等项目已经对其进行了修改。\n\n首先得有一个retry机制,也就是让操作执行在一个循环中,一旦捕获到deadlock的error就将操作重新进行,这个在OpenStack的oslo.db中已 经提供了相应的方法叫wrap_db_retry,是一个Python装饰器,使用方法如下:\n    ```\nfrom oslo_db import api as oslo_db_api\n@oslo_db_api.wrap_db_retry(max_retries=5, retry_on_deadlock=True,\n                           retry_on_request=True)\ndef db_operations():\n    ...\n    ```\n\n然后在这个循环之中我们使用叫做\"Compare And Swap(CAS)\"的无锁方法来完成update操作,CAS是最先在CPU中使用的,CAS说白了就是先比较,再修改,在进行UPDATE操作之前,我们先SELEC T出来一些数据,我们叫做期望数据,在UPDATE的时候要去比对这些期望数据,如果期望数据有变化,说明有另一个会话对该行进行了修改, 那么我们就不能继续进行修改操作了,只能报错,然后retry;如果没变化,我们就可以将修改操作执行下去。该行为体现在SQL语句中就是在 UPDATE的时候加上WHERE语句,如\"UPDATE ... WHERE ...\"。\n\n给出一个[计费项目][4]中修改用户等级的DB操作源码:\n    ```\n@oslo_db_api.wrap_db_retry(max_retries=5, retry_on_deadlock=True,\n                           retry_on_request=True)\ndef change_account_level(self, context, user_id, level, project_id=None):\n    session = get_session()\n    with session.begin():\n# 在会话刚开始的时候,需要先SELECT出来该account的数据,也就是期望数据 account = session.query(sa_models.Account).\\\n            filter_by(user_id=user_id).\\\n            one()]\n# 在执行UPDATE操作的时候需要比对期望数据,user_id和level,如果它们变化了,那么rows_update就会被赋值为0 ,就会走入retry的逻辑\n        params = {'level': level}\n        rows_update = session.query(sa_models.Account).\\\n            filter_by(user_id=user_id).\\\n            filter_by(level=account.level).\\\n            update(params, synchronize_session='evaluate')\n# 修改失败,报出RetryRequest的错误,使上面的装饰器抓获该错误,然后重新运行逻辑 if not rows_update:\n            LOG.debug('The row was updated in a concurrent transaction, '\n                      'we will fetch another one')\n            raise db_exc.RetryRequest(exception.AccountLevelUpdateFailed())\n    return self._row_to_db_account_model(account)\n    ```\n\n## 数据的一致性问题\n该问题在[OpenStack邮件列表][5]中有说过,虽然Galera是生成同步的,也就是写入数据同步到整个集群非常快,用时非常短,但既然是分布式系 统,本质上还是需要一些时间的,尤其是在负载很大的时候,同步不及时会很严重。\n\n所以Galera只是虚拟同步,不是直接同步,也就是会存在一些gap时间段,无法读到写入的数据,Galera提供了一个配置项,叫做wsrep_sync_ wait,它的默认值是0,如果赋值为1,就能够保证读写的一致性,但是会带来延迟问题。\n\n## Appendix\n\n1. [understanding reservations concurrency locking in nova][6]\n2. [investigating replication latency in percona xtradb cluster][7]\n3. [understanding multi node writing conflict metrics in percona xtradb cluster and galera][8]\n4. [an introduction to lock-free programming][9]\n5. [mysql multi master replication with galera][10]\n\n\n  [1]: /img/bVP3zo\n  [2]: https://github.com/ShooterTT/gringotts\n  [3]: https://www.percona.com/blog/2015/06/08/maxscale-a-new-tool-to-solve-your-mysql-scalability-problems/\n  [4]: https://github.com/ShooterTT/gringotts\n  [5]: http://lists.openstack.org/pipermail/openstack-dev/2015-February/056007.html\n  [6]: http://www.joinfu.com/2015/01/understanding-reservations-concurrency-locking-in-nova/#footnote-3\n  [7]: https://www.percona.com/blog/2013/03/03/investigating-replication-latency-in-percona-xtradb-cluster/\n  [8]: https://www.percona.com/blog/2012/11/20/understanding-multi-node-writing-conflict-metrics-in-percona-xtradb-cluster-and-galera/\n  [9]: http://preshing.com/20120612/an-introduction-to-lock-free-programming/\n  [10]: http://www.sebastien-han.fr/blog/2012/04/01/mysql-multi-master-replication-with-galera/",
      "json_metadata": "{\"tags\":[\"cn\",\"python\",\"mysql\"],\"users\":[\"oslo\"],\"image\":[\"https://shootertt.github.io/uploads/galera.png\"],\"links\":[\"https://github.com/ShooterTT/gringotts\",\"https://www.percona.com/blog/2015/06/08/maxscale-a-new-tool-to-solve-your-mysql-scalability-problems/\",\"http://lists.openstack.org/pipermail/openstack-dev/2015-February/056007.html\",\"http://www.joinfu.com/2015/01/understanding-reservations-concurrency-locking-in-nova/#footnote-3\",\"https://www.percona.com/blog/2013/03/03/investigating-replication-latency-in-percona-xtradb-cluster/\",\"https://www.percona.com/blog/2012/11/20/understanding-multi-node-writing-conflict-metrics-in-percona-xtradb-cluster-and-galera/\",\"http://preshing.com/20120612/an-introduction-to-lock-free-programming/\",\"http://www.sebastien-han.fr/blog/2012/04/01/mysql-multi-master-replication-with-galera/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "select-for-update",
      "title": "数据库写操作弃用“SELECT ... FOR UPDATE”解决方案"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-29T10:36:42",
  "trx_id": "224083ee5863041751c6df22f3899fffe638e19f",
  "trx_in_block": 5,
  "virtual_op": 0
}
heha37claimed reward balance: 1.110 SBD, 0.667 SP
2017/06/27 10:24:12
accountheha37
reward sbd1.110 SBD
reward steem0.000 STEEM
reward vests1084.387839 VESTS
Transaction InfoBlock #13184730/Trx f234b3d39e9294cc25e57635d35821880a1f7827
View Raw JSON Data
{
  "block": 13184730,
  "op": [
    "claim_reward_balance",
    {
      "account": "heha37",
      "reward_sbd": "1.110 SBD",
      "reward_steem": "0.000 STEEM",
      "reward_vests": "1084.387839 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-27T10:24:12",
  "trx_id": "f234b3d39e9294cc25e57635d35821880a1f7827",
  "trx_in_block": 13,
  "virtual_op": 0
}
heha37received 1.110 SBD, 0.667 SP author reward for @heha37 / 5e2gjy
2017/06/25 14:27:27
authorheha37
permlink5e2gjy
sbd payout1.110 SBD
steem payout0.000 STEEM
vesting payout1084.387839 VESTS
Transaction InfoBlock #13132039/Virtual Operation #32
View Raw JSON Data
{
  "block": 13132039,
  "op": [
    "author_reward",
    {
      "author": "heha37",
      "permlink": "5e2gjy",
      "sbd_payout": "1.110 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "1084.387839 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-25T14:27:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 32
}
2017/06/21 18:39:57
authorsteemitboard
bodyCongratulations @heha37! You have completed some achievement on Steemit and have been rewarded with new badge(s) : [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstcomment.png)](http://steemitboard.com/@heha37) You made your First Comment Click on any badge to view your own Board of Honnor on SteemitBoard. For more information about SteemitBoard, click [here](https://steemit.com/@steemitboard) If you no longer want to receive notifications, reply to this comment with the word `STOP` By upvoting this notification, you can help all Steemit users. Learn how [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!
json metadata{"image":["https://steemitboard.com/img/notifications.png"]}
parent authorheha37
parent permlink5e2gjy
permlinksteemitboard-notify-heha37-20170621t203958000z
title
Transaction InfoBlock #13021922/Trx 2c58d581091f6d1ff4809b106e4007373f93ca94
View Raw JSON Data
{
  "block": 13021922,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @heha37! You have completed some achievement on Steemit and have been rewarded with new badge(s) :\n\n[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstcomment.png)](http://steemitboard.com/@heha37) You made your First Comment\n\nClick on any badge to view your own Board of Honnor on SteemitBoard.\nFor more information about SteemitBoard, click [here](https://steemit.com/@steemitboard)\n\nIf you no longer want to receive notifications, reply to this comment with the word `STOP`\n\nBy upvoting this notification, you can help all Steemit users. Learn how [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notifications.png\"]}",
      "parent_author": "heha37",
      "parent_permlink": "5e2gjy",
      "permlink": "steemitboard-notify-heha37-20170621t203958000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-21T18:39:57",
  "trx_id": "2c58d581091f6d1ff4809b106e4007373f93ca94",
  "trx_in_block": 19,
  "virtual_op": 0
}
2017/06/21 05:27:30
idfollow
json["follow",{"follower":"heha37","following":"oflyhigh","what":["blog"]}]
required auths[]
required posting auths["heha37"]
Transaction InfoBlock #13006128/Trx 8c14a66dc33c2c99cf3252dc5b31d6cfbdf122b9
View Raw JSON Data
{
  "block": 13006128,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"heha37\",\"following\":\"oflyhigh\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "heha37"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-21T05:27:30",
  "trx_id": "8c14a66dc33c2c99cf3252dc5b31d6cfbdf122b9",
  "trx_in_block": 10,
  "virtual_op": 0
}
2017/06/21 05:27:12
authorheha37
body谢谢
json metadata{"tags":["cn"],"app":"steemit/0.1"}
parent authoroflyhigh
parent permlinkre-heha37-5e2gjy-20170618t145424792z
permlinkre-oflyhigh-re-heha37-5e2gjy-20170621t052711756z
title
Transaction InfoBlock #13006122/Trx 5c6fffed5a1f4c862e6ba7f8e02140898d9f12e3
View Raw JSON Data
{
  "block": 13006122,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "谢谢",
      "json_metadata": "{\"tags\":[\"cn\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "oflyhigh",
      "parent_permlink": "re-heha37-5e2gjy-20170618t145424792z",
      "permlink": "re-oflyhigh-re-heha37-5e2gjy-20170621t052711756z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-21T05:27:12",
  "trx_id": "5c6fffed5a1f4c862e6ba7f8e02140898d9f12e3",
  "trx_in_block": 17,
  "virtual_op": 0
}
azazqweupvoted (100.00%) @heha37 / 5e2gjy
2017/06/19 17:04:39
authorheha37
permlink5e2gjy
voterazazqwe
weight10000 (100.00%)
Transaction InfoBlock #12962686/Trx a99a04aaca35a58d54d013174df6bced772f37f6
View Raw JSON Data
{
  "block": 12962686,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "5e2gjy",
      "voter": "azazqwe",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-19T17:04:39",
  "trx_id": "a99a04aaca35a58d54d013174df6bced772f37f6",
  "trx_in_block": 5,
  "virtual_op": 0
}
ashwimupvoted (100.00%) @heha37 / 5e2gjy
2017/06/18 17:32:27
authorheha37
permlink5e2gjy
voterashwim
weight10000 (100.00%)
Transaction InfoBlock #12934478/Trx 5d5508623eb9198caaeced782e58afc69e70d818
View Raw JSON Data
{
  "block": 12934478,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "5e2gjy",
      "voter": "ashwim",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-18T17:32:27",
  "trx_id": "5d5508623eb9198caaeced782e58afc69e70d818",
  "trx_in_block": 1,
  "virtual_op": 0
}
2017/06/18 14:54:27
authoroflyhigh
body不错,感谢分享
json metadata{"tags":["cn"],"app":"steemit/0.1"}
parent authorheha37
parent permlink5e2gjy
permlinkre-heha37-5e2gjy-20170618t145424792z
title
Transaction InfoBlock #12931321/Trx 98173da0c8e05b9ce6ac82e9e7e8ea14e3c77cba
View Raw JSON Data
{
  "block": 12931321,
  "op": [
    "comment",
    {
      "author": "oflyhigh",
      "body": "不错,感谢分享",
      "json_metadata": "{\"tags\":[\"cn\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "heha37",
      "parent_permlink": "5e2gjy",
      "permlink": "re-heha37-5e2gjy-20170618t145424792z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-18T14:54:27",
  "trx_id": "98173da0c8e05b9ce6ac82e9e7e8ea14e3c77cba",
  "trx_in_block": 7,
  "virtual_op": 0
}
oflyhighupvoted (35.00%) @heha37 / 5e2gjy
2017/06/18 14:54:06
authorheha37
permlink5e2gjy
voteroflyhigh
weight3500 (35.00%)
Transaction InfoBlock #12931314/Trx a94c33f653b44ef4dc61968331e096d8186323be
View Raw JSON Data
{
  "block": 12931314,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "5e2gjy",
      "voter": "oflyhigh",
      "weight": 3500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-18T14:54:06",
  "trx_id": "a94c33f653b44ef4dc61968331e096d8186323be",
  "trx_in_block": 13,
  "virtual_op": 0
}
2017/06/18 14:29:39
authorjulee
bodyBeautiful art picture👍🏻
json metadata{"tags":"cn","app":"esteem/1.4.5","format":"markdown+html","community":"esteem"}
parent authorheha37
parent permlink5e2gjy
permlinkre-heha37-2017618t102937493z
title
Transaction InfoBlock #12930825/Trx 0265ce60216ebfd82e67dd40f9a96bc555549ee8
View Raw JSON Data
{
  "block": 12930825,
  "op": [
    "comment",
    {
      "author": "julee",
      "body": "Beautiful art picture👍🏻",
      "json_metadata": "{\"tags\":\"cn\",\"app\":\"esteem/1.4.5\",\"format\":\"markdown+html\",\"community\":\"esteem\"}",
      "parent_author": "heha37",
      "parent_permlink": "5e2gjy",
      "permlink": "re-heha37-2017618t102937493z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-18T14:29:39",
  "trx_id": "0265ce60216ebfd82e67dd40f9a96bc555549ee8",
  "trx_in_block": 13,
  "virtual_op": 0
}
juleeupvoted (100.00%) @heha37 / 5e2gjy
2017/06/18 14:29:12
authorheha37
permlink5e2gjy
voterjulee
weight10000 (100.00%)
Transaction InfoBlock #12930816/Trx 3585e870c9479847613fc467179c199b3bad07ed
View Raw JSON Data
{
  "block": 12930816,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "5e2gjy",
      "voter": "julee",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-18T14:29:12",
  "trx_id": "3585e870c9479847613fc467179c199b3bad07ed",
  "trx_in_block": 0,
  "virtual_op": 0
}
2017/06/18 14:28:21
authorcrypto-p
bodyThank you for sharing this, following you
json metadata{"tags":["cn"],"app":"steemit/0.1"}
parent authorheha37
parent permlink5e2gjy
permlinkre-heha37-5e2gjy-20170618t142821067z
title
Transaction InfoBlock #12930799/Trx 426ef7c85c774ec34fda77b03be80b089f07cd19
View Raw JSON Data
{
  "block": 12930799,
  "op": [
    "comment",
    {
      "author": "crypto-p",
      "body": "Thank you for sharing this, following you",
      "json_metadata": "{\"tags\":[\"cn\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "heha37",
      "parent_permlink": "5e2gjy",
      "permlink": "re-heha37-5e2gjy-20170618t142821067z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-18T14:28:21",
  "trx_id": "426ef7c85c774ec34fda77b03be80b089f07cd19",
  "trx_in_block": 27,
  "virtual_op": 0
}
heha37upvoted (100.00%) @heha37 / 5e2gjy
2017/06/18 14:27:27
authorheha37
permlink5e2gjy
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #12930781/Trx 9fcf7b80e7368573548d37e845a4630e0e1079f4
View Raw JSON Data
{
  "block": 12930781,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "5e2gjy",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-18T14:27:27",
  "trx_id": "9fcf7b80e7368573548d37e845a4630e0e1079f4",
  "trx_in_block": 31,
  "virtual_op": 0
}
heha37published a new post: 5e2gjy
2017/06/18 14:27:27
authorheha37
body![reading](https://shootertt.github.io/uploads/reading.jpg) 当我听说一些老师和学生由于基础题提分显著,而把本应该用来学习阅读和写作的时间也分配给了基础题的讲解,阅读和写作被边缘化,我想到了当初功利心极强的自己。 曾几何时,我一心去做我认为有用的事情,能看到显著效果的事情。我功利心极强,读书就要读能让我成功的书,因此拜读了很多成功学书籍啊,喝了一肚子的鸡汤。干什么事情一定要有个明确的目的性和计划性,生活就像在打卡,坚信一个一个地做一定能成功。打着打着,好像卡丢了,自己越来越焦虑,感觉越活越没意思,就好像你自己顺着一条路认认真真地走,然后心里催眠自己前面就是传说中的宝藏,结果你走了好长时间前面路断了,出现个悬崖,你顿时觉得信念的大厦一下子坍塌,不知道该干什么。 后来我领悟到,功利心和有趣是成反比的,功利心有时候是一种负担。其实读书应该是一种精神上的享受,通过引发自己的好奇心来触发思考,后来我读书就不先问自己读这东西有什么用,而是读很方面的书,让兴趣行使它的权利。 写作和写代码也是如此,有了创作分享的冲动就去写作,有了想实现一个逻辑的灵感就去写代码,然后去享受这个创作的过程,然后从无到有,自己在这个过程中成长。 我觉得这些老师和学生有些急功近利了,导致短视。阅读和写作占的分数比例不低,并且它有带动其他项目分数提高的功用,因为很多学生分数差是因为阅读理解能力低,导致读不懂题、理解不对题目的逻辑。阅读和写作,一个输入,一个输出,正好还能提高一个人的学习能力,我觉得不如分配多一点儿时间给这对组合。
json metadata{"tags":["cn","essay"],"image":["https://shootertt.github.io/uploads/reading.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink5e2gjy
title功利心和有趣
Transaction InfoBlock #12930781/Trx 9fcf7b80e7368573548d37e845a4630e0e1079f4
View Raw JSON Data
{
  "block": 12930781,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "![reading](https://shootertt.github.io/uploads/reading.jpg)\n\n当我听说一些老师和学生由于基础题提分显著,而把本应该用来学习阅读和写作的时间也分配给了基础题的讲解,阅读和写作被边缘化,我想到了当初功利心极强的自己。\n\n\n曾几何时,我一心去做我认为有用的事情,能看到显著效果的事情。我功利心极强,读书就要读能让我成功的书,因此拜读了很多成功学书籍啊,喝了一肚子的鸡汤。干什么事情一定要有个明确的目的性和计划性,生活就像在打卡,坚信一个一个地做一定能成功。打着打着,好像卡丢了,自己越来越焦虑,感觉越活越没意思,就好像你自己顺着一条路认认真真地走,然后心里催眠自己前面就是传说中的宝藏,结果你走了好长时间前面路断了,出现个悬崖,你顿时觉得信念的大厦一下子坍塌,不知道该干什么。\n\n\n后来我领悟到,功利心和有趣是成反比的,功利心有时候是一种负担。其实读书应该是一种精神上的享受,通过引发自己的好奇心来触发思考,后来我读书就不先问自己读这东西有什么用,而是读很方面的书,让兴趣行使它的权利。\n\n\n写作和写代码也是如此,有了创作分享的冲动就去写作,有了想实现一个逻辑的灵感就去写代码,然后去享受这个创作的过程,然后从无到有,自己在这个过程中成长。\n\n\n我觉得这些老师和学生有些急功近利了,导致短视。阅读和写作占的分数比例不低,并且它有带动其他项目分数提高的功用,因为很多学生分数差是因为阅读理解能力低,导致读不懂题、理解不对题目的逻辑。阅读和写作,一个输入,一个输出,正好还能提高一个人的学习能力,我觉得不如分配多一点儿时间给这对组合。",
      "json_metadata": "{\"tags\":[\"cn\",\"essay\"],\"image\":[\"https://shootertt.github.io/uploads/reading.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "5e2gjy",
      "title": "功利心和有趣"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-18T14:27:27",
  "trx_id": "9fcf7b80e7368573548d37e845a4630e0e1079f4",
  "trx_in_block": 31,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/16 10:04:12
authorheha37
body@@ -1,8 +1,66 @@ +!%5Brisk%5D(https://shootertt.github.io/uploads/panic7.jpg)%0A%0A%0A %E4%BD%9C%E6%AD%BB%E7%9A%84%E4%BA%BA%EF%BC%8C%E6%AC%A2%E8%BF%8E%E6%9D%A5
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown","image":["https://shootertt.github.io/uploads/panic7.jpg"]}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12867965/Trx 19a5a7be2b42ef90a9b0da31c0bd05cb81356794
View Raw JSON Data
{
  "block": 12867965,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -1,8 +1,66 @@\n+!%5Brisk%5D(https://shootertt.github.io/uploads/panic7.jpg)%0A%0A%0A\n %E4%BD%9C%E6%AD%BB%E7%9A%84%E4%BA%BA%EF%BC%8C%E6%AC%A2%E8%BF%8E%E6%9D%A5\n",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://shootertt.github.io/uploads/panic7.jpg\"]}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T10:04:12",
  "trx_id": "19a5a7be2b42ef90a9b0da31c0bd05cb81356794",
  "trx_in_block": 24,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/16 09:28:48
authorheha37
body@@ -602,16 +602,17 @@ %0A* %E8%AE%A4%E7%9F%A5%E5%B7%AE%E5%BC%82%0A +%0A %E8%87%AA%E5%B7%B1%E7%9A%84%E8%AE%A4%E7%9F%A5%E4%B8%8D%E8%B6%B3%EF%BC%8C @@ -756,16 +756,17 @@ %0A* %E5%85%88%E8%A1%8C%E5%90%8E%E7%9F%A5%0A +%0A %E8%A1%8C%E5%8A%A8%E5%BE%88%E9%87%8D%E8%A6%81%EF%BC%8C%E6%AF%94%E5%A6%82 @@ -855,16 +855,17 @@ %E5%8C%BA%E5%9D%97%E9%93%BE%E8%BF%99%E4%B8%AA%E6%8A%80%E6%9C%AF%0A +%0A %E6%88%91%E5%85%B6%E5%AE%9E%E5%AF%B9%E7%82%92%E5%B8%81%E8%BF%99%E7%A7%8D
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12867257/Trx 6f1d43c92bab7cb8ac820346bde4e10cd23ecad0
View Raw JSON Data
{
  "block": 12867257,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -602,16 +602,17 @@\n %0A* %E8%AE%A4%E7%9F%A5%E5%B7%AE%E5%BC%82%0A\n+%0A\n %E8%87%AA%E5%B7%B1%E7%9A%84%E8%AE%A4%E7%9F%A5%E4%B8%8D%E8%B6%B3%EF%BC%8C\n@@ -756,16 +756,17 @@\n %0A* %E5%85%88%E8%A1%8C%E5%90%8E%E7%9F%A5%0A\n+%0A\n %E8%A1%8C%E5%8A%A8%E5%BE%88%E9%87%8D%E8%A6%81%EF%BC%8C%E6%AF%94%E5%A6%82\n@@ -855,16 +855,17 @@\n %E5%8C%BA%E5%9D%97%E9%93%BE%E8%BF%99%E4%B8%AA%E6%8A%80%E6%9C%AF%0A\n+%0A\n %E6%88%91%E5%85%B6%E5%AE%9E%E5%AF%B9%E7%82%92%E5%B8%81%E8%BF%99%E7%A7%8D\n",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:28:48",
  "trx_id": "6f1d43c92bab7cb8ac820346bde4e10cd23ecad0",
  "trx_in_block": 9,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/16 09:28:15
authorheha37
body@@ -374,16 +374,17 @@ %E5%88%AB%E4%BA%BA%E7%9A%84%E8%BF%99%E4%B9%88%E5%A5%BD%EF%BC%9F%0A +%0A %E6%88%91%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AA%E5%BF%B5%E6%98%AF%E5%9B%A0
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12867246/Trx 20e3e387981032db6df61fa46ab1989e182e8af5
View Raw JSON Data
{
  "block": 12867246,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -374,16 +374,17 @@\n %E5%88%AB%E4%BA%BA%E7%9A%84%E8%BF%99%E4%B9%88%E5%A5%BD%EF%BC%9F%0A\n+%0A\n %E6%88%91%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AA%E5%BF%B5%E6%98%AF%E5%9B%A0\n",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:28:15",
  "trx_id": "20e3e387981032db6df61fa46ab1989e182e8af5",
  "trx_in_block": 1,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/16 09:27:51
authorheha37
body@@ -374,18 +374,16 @@ %E5%88%AB%E4%BA%BA%E7%9A%84%E8%BF%99%E4%B9%88%E5%A5%BD%EF%BC%9F%0A -%0A%0A %E6%88%91%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AA%E5%BF%B5%E6%98%AF%E5%9B%A0
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12867238/Trx 32637766c79325f791b04cca8c196339bf32c46f
View Raw JSON Data
{
  "block": 12867238,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -374,18 +374,16 @@\n %E5%88%AB%E4%BA%BA%E7%9A%84%E8%BF%99%E4%B9%88%E5%A5%BD%EF%BC%9F%0A\n-%0A%0A\n %E6%88%91%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AA%E5%BF%B5%E6%98%AF%E5%9B%A0\n",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:27:51",
  "trx_id": "32637766c79325f791b04cca8c196339bf32c46f",
  "trx_in_block": 4,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/16 09:27:15
authorheha37
body@@ -376,17 +376,16 @@ %E7%9A%84%E8%BF%99%E4%B9%88%E5%A5%BD%EF%BC%9F%0A%0A%0A -%0A %E6%88%91%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AA%E5%BF%B5%E6%98%AF%E5%9B%A0 @@ -599,16 +599,16 @@ %E7%82%BC%E3%80%82%0A%0A +%0A * %E8%AE%A4%E7%9F%A5%E5%B7%AE%E5%BC%82%0A -%0A %E8%87%AA%E5%B7%B1%E7%9A%84%E8%AE%A4 @@ -752,16 +752,16 @@ %E5%BF%83%E3%80%82%0A%0A +%0A * %E5%85%88%E8%A1%8C%E5%90%8E%E7%9F%A5%0A -%0A %E8%A1%8C%E5%8A%A8%E5%BE%88%E9%87%8D @@ -841,16 +841,17 @@ %E7%9B%B8%E5%85%B3%E7%9A%84%E7%9F%A5%E8%AF%86%E3%80%82%0A%0A +%0A * %E7%9C%8B%E5%A5%BD%E5%8C%BA%E5%9D%97%E9%93%BE%E8%BF%99 @@ -854,17 +854,16 @@ %E5%8C%BA%E5%9D%97%E9%93%BE%E8%BF%99%E4%B8%AA%E6%8A%80%E6%9C%AF%0A -%0A %E6%88%91%E5%85%B6%E5%AE%9E%E5%AF%B9%E7%82%92%E5%B8%81%E8%BF%99%E7%A7%8D
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12867226/Trx 8dc757deefa84e721279de73af667cbbcb17fc3f
View Raw JSON Data
{
  "block": 12867226,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -376,17 +376,16 @@\n %E7%9A%84%E8%BF%99%E4%B9%88%E5%A5%BD%EF%BC%9F%0A%0A%0A\n-%0A\n %E6%88%91%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AA%E5%BF%B5%E6%98%AF%E5%9B%A0\n@@ -599,16 +599,16 @@\n %E7%82%BC%E3%80%82%0A%0A\n+%0A\n * %E8%AE%A4%E7%9F%A5%E5%B7%AE%E5%BC%82%0A\n-%0A\n %E8%87%AA%E5%B7%B1%E7%9A%84%E8%AE%A4\n@@ -752,16 +752,16 @@\n %E5%BF%83%E3%80%82%0A%0A\n+%0A\n * %E5%85%88%E8%A1%8C%E5%90%8E%E7%9F%A5%0A\n-%0A\n %E8%A1%8C%E5%8A%A8%E5%BE%88%E9%87%8D\n@@ -841,16 +841,17 @@\n %E7%9B%B8%E5%85%B3%E7%9A%84%E7%9F%A5%E8%AF%86%E3%80%82%0A%0A\n+%0A\n * %E7%9C%8B%E5%A5%BD%E5%8C%BA%E5%9D%97%E9%93%BE%E8%BF%99\n@@ -854,17 +854,16 @@\n %E5%8C%BA%E5%9D%97%E9%93%BE%E8%BF%99%E4%B8%AA%E6%8A%80%E6%9C%AF%0A\n-%0A\n %E6%88%91%E5%85%B6%E5%AE%9E%E5%AF%B9%E7%82%92%E5%B8%81%E8%BF%99%E7%A7%8D\n",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:27:15",
  "trx_id": "8dc757deefa84e721279de73af667cbbcb17fc3f",
  "trx_in_block": 3,
  "virtual_op": 0
}
ubgupvoted (1.00%) @heha37 / 4dqlkh
2017/06/16 09:26:48
authorheha37
permlink4dqlkh
voterubg
weight100 (1.00%)
Transaction InfoBlock #12867217/Trx b09aadfeae6f0f8b5854bb1fa74f4c65a7391d70
View Raw JSON Data
{
  "block": 12867217,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "4dqlkh",
      "voter": "ubg",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:26:48",
  "trx_id": "b09aadfeae6f0f8b5854bb1fa74f4c65a7391d70",
  "trx_in_block": 9,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/16 09:26:18
authorheha37
body@@ -275,17 +275,16 @@ %E4%B8%80%E4%BA%9B%E4%B8%8D%E5%A5%BD%E7%9A%84%E9%97%AA%E5%BF%B5%0A -%0A %3E %E6%80%8E%E4%B9%88%E5%9B%9E%E4%BA%8B%EF%BC%8C%E4%B8%80
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12867207/Trx a223da4b5f97e78e6336398eea5f9b9106305bb1
View Raw JSON Data
{
  "block": 12867207,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -275,17 +275,16 @@\n %E4%B8%80%E4%BA%9B%E4%B8%8D%E5%A5%BD%E7%9A%84%E9%97%AA%E5%BF%B5%0A\n-%0A\n %3E %E6%80%8E%E4%B9%88%E5%9B%9E%E4%BA%8B%EF%BC%8C%E4%B8%80\n",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:26:18",
  "trx_id": "a223da4b5f97e78e6336398eea5f9b9106305bb1",
  "trx_in_block": 10,
  "virtual_op": 0
}
aluhut.lifeupvoted (100.00%) @heha37 / 4dqlkh
2017/06/16 09:26:09
authorheha37
permlink4dqlkh
voteraluhut.life
weight10000 (100.00%)
Transaction InfoBlock #12867204/Trx 6a917cc18ef3d1436013950bdc576af074ac3f90
View Raw JSON Data
{
  "block": 12867204,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "4dqlkh",
      "voter": "aluhut.life",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:26:09",
  "trx_id": "6a917cc18ef3d1436013950bdc576af074ac3f90",
  "trx_in_block": 1,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/16 09:25:39
authorheha37
body@@ -294,17 +294,16 @@ %E8%B7%8C%EF%BC%8C%E4%B8%80%E5%8D%96%E5%B0%B1%E6%B6%A8%EF%BC%9F%0A -%0A %3E %E8%BF%99%E4%B8%AA%E5%B8%81%E6%80%8E%E4%B9%88%E6%A0%B7 @@ -310,17 +310,16 @@ %EF%BC%8C%E5%88%AB%E4%BA%BA%E6%80%8E%E4%B9%88%E7%9C%8B%EF%BC%9F%0A -%0A %3E %E6%B6%A8%E5%BE%97%E8%BF%99%E4%B9%88%E5%87%B6%EF%BC%8C @@ -323,17 +323,16 @@ %E4%B9%88%E5%87%B6%EF%BC%8C%E5%8F%91%E8%B4%A2%E4%BA%86%EF%BC%81%0A -%0A %3E %E8%B7%8C%E5%BE%97%E8%BF%99%E4%B9%88%E7%8B%A0%EF%BC%8C @@ -336,17 +336,16 @@ %E4%B9%88%E7%8B%A0%EF%BC%8C%E5%AE%8C%E8%9B%8B%E4%BA%86%EF%BC%81%0A -%0A %3E %E5%88%9A%E6%89%8D%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80 @@ -354,17 +354,16 @@ %E6%88%91%E9%94%99%E8%BF%87%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F%0A -%0A %3E %E6%88%91%E7%9A%84%E8%BF%90%E6%B0%94%E8%BF%99%E4%B9%88
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12867194/Trx 7c1dc8803c3f7297b6cfbf22fecbfc5f25edfdb0
View Raw JSON Data
{
  "block": 12867194,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -294,17 +294,16 @@\n %E8%B7%8C%EF%BC%8C%E4%B8%80%E5%8D%96%E5%B0%B1%E6%B6%A8%EF%BC%9F%0A\n-%0A\n %3E %E8%BF%99%E4%B8%AA%E5%B8%81%E6%80%8E%E4%B9%88%E6%A0%B7\n@@ -310,17 +310,16 @@\n %EF%BC%8C%E5%88%AB%E4%BA%BA%E6%80%8E%E4%B9%88%E7%9C%8B%EF%BC%9F%0A\n-%0A\n %3E %E6%B6%A8%E5%BE%97%E8%BF%99%E4%B9%88%E5%87%B6%EF%BC%8C\n@@ -323,17 +323,16 @@\n %E4%B9%88%E5%87%B6%EF%BC%8C%E5%8F%91%E8%B4%A2%E4%BA%86%EF%BC%81%0A\n-%0A\n %3E %E8%B7%8C%E5%BE%97%E8%BF%99%E4%B9%88%E7%8B%A0%EF%BC%8C\n@@ -336,17 +336,16 @@\n %E4%B9%88%E7%8B%A0%EF%BC%8C%E5%AE%8C%E8%9B%8B%E4%BA%86%EF%BC%81%0A\n-%0A\n %3E %E5%88%9A%E6%89%8D%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80\n@@ -354,17 +354,16 @@\n %E6%88%91%E9%94%99%E8%BF%87%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F%0A\n-%0A\n %3E %E6%88%91%E7%9A%84%E8%BF%90%E6%B0%94%E8%BF%99%E4%B9%88\n",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:25:39",
  "trx_id": "7c1dc8803c3f7297b6cfbf22fecbfc5f25edfdb0",
  "trx_in_block": 12,
  "virtual_op": 0
}
2017/06/16 09:20:33
authorrichguy
permlinknewbie-initiative-upvoting-every-newbie-with-my-usd0-01-vote
voterheha37
weight0 (0.00%)
Transaction InfoBlock #12867093/Trx 3ae85abe1c4547d630a41d452a8ffbec7acf8a6d
View Raw JSON Data
{
  "block": 12867093,
  "op": [
    "vote",
    {
      "author": "richguy",
      "permlink": "newbie-initiative-upvoting-every-newbie-with-my-usd0-01-vote",
      "voter": "heha37",
      "weight": 0
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:20:33",
  "trx_id": "3ae85abe1c4547d630a41d452a8ffbec7acf8a6d",
  "trx_in_block": 5,
  "virtual_op": 0
}
2017/06/16 09:20:21
authorrichguy
permlinknewbie-initiative-upvoting-every-newbie-with-my-usd0-01-vote
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #12867089/Trx a75195b56b56e00f32a9fa3d64a7e4d417f1ab0f
View Raw JSON Data
{
  "block": 12867089,
  "op": [
    "vote",
    {
      "author": "richguy",
      "permlink": "newbie-initiative-upvoting-every-newbie-with-my-usd0-01-vote",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-16T09:20:21",
  "trx_id": "a75195b56b56e00f32a9fa3d64a7e4d417f1ab0f",
  "trx_in_block": 18,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/15 14:39:42
authorheha37
body@@ -433,17 +433,17 @@ %E5%8A%9B%E9%83%BD%E6%94%BE%E5%9C%A8 -%E7%9A%84 +%E4%BA%86 %E4%BB%B7%E6%A0%BC%E7%9A%84%E6%B3%A2%E5%8A%A8%E4%B8%8A%EF%BC%8C -%E5%8F%8A +%E6%9E%81 %E5%85%B6%E7%9F%AD%E8%A7%86%E5%9C%B0 @@ -572,9 +572,9 @@ %E9%92%A5%E5%8C%99%E3%80%82%E6%88%91 -%E5%8F%88 +%E6%9C%89 %E8%BF%99%E4%BA%9B%E7%94%B5%E5%85%89 @@ -757,17 +757,17 @@ %E7%9A%84%E4%B8%AD%E5%BF%83%E3%80%82%0A%0A* -%E7%8E%B0 +%E5%85%88 %E8%A1%8C%E5%90%8E%E7%9F%A5%0A%0A%E8%A1%8C%E5%8A%A8%E5%BE%88
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12844699/Trx a078809c0d3929d70e44be3f5dce473c71fa441e
View Raw JSON Data
{
  "block": 12844699,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "@@ -433,17 +433,17 @@\n %E5%8A%9B%E9%83%BD%E6%94%BE%E5%9C%A8\n-%E7%9A%84\n+%E4%BA%86\n %E4%BB%B7%E6%A0%BC%E7%9A%84%E6%B3%A2%E5%8A%A8%E4%B8%8A%EF%BC%8C\n-%E5%8F%8A\n+%E6%9E%81\n %E5%85%B6%E7%9F%AD%E8%A7%86%E5%9C%B0\n@@ -572,9 +572,9 @@\n %E9%92%A5%E5%8C%99%E3%80%82%E6%88%91\n-%E5%8F%88\n+%E6%9C%89\n %E8%BF%99%E4%BA%9B%E7%94%B5%E5%85%89\n@@ -757,17 +757,17 @@\n %E7%9A%84%E4%B8%AD%E5%BF%83%E3%80%82%0A%0A* \n-%E7%8E%B0\n+%E5%85%88\n %E8%A1%8C%E5%90%8E%E7%9F%A5%0A%0A%E8%A1%8C%E5%8A%A8%E5%BE%88\n",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-15T14:39:42",
  "trx_id": "a078809c0d3929d70e44be3f5dce473c71fa441e",
  "trx_in_block": 11,
  "virtual_op": 0
}
heha37upvoted (100.00%) @heha37 / 4dqlkh
2017/06/11 15:51:45
authorheha37
permlink4dqlkh
voterheha37
weight10000 (100.00%)
Transaction InfoBlock #12731007/Trx f510ae1bccc42eaa4f749353296326aa973ec58a
View Raw JSON Data
{
  "block": 12731007,
  "op": [
    "vote",
    {
      "author": "heha37",
      "permlink": "4dqlkh",
      "voter": "heha37",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-11T15:51:45",
  "trx_id": "f510ae1bccc42eaa4f749353296326aa973ec58a",
  "trx_in_block": 0,
  "virtual_op": 0
}
heha37published a new post: 4dqlkh
2017/06/11 15:51:45
authorheha37
body作死的人,欢迎来到区块链的世界。 几个月之前,看了中本聪的比特币论文,然后就决定进入区块链世界闯一闯。试水的第一件事情是参加了一个币种的ICO,投入了一小部分资金进行尝试,之后该币在一些区块链交易所上市,价格一路疯涨,此时的我很兴奋,对价格的波动很敏感,一直在盯盘,这期间还到一些所谓的“币圈”中看消息、看大家的议论,做了几笔短线交易(事后看都很不理智),最后以卖掉一些币提现、留下一些币期待长期价值为结局。 这一次经历体验让我领悟颇多,也见识到了自己人性中的弱点,所以我对自己的这一次行为进行一下复盘,总结之后以励再战。 * 一些不好的闪念 > 怎么回事,一买就跌,一卖就涨? > 这个币怎么样,别人怎么看? > 涨得这么凶,发财了! > 跌得这么狠,完蛋了! > 刚才发生了什么,我错过了什么? > 我的运气这么差,为什么别人的这么好? 我出现的闪念是因为我过于追求短期利益,并且对区块链货币的认识也不够深刻,所以我把注意力都放在的价格的波动上,及其短视地做出了一些错误的交易,导致自己的损失成为别人的短期收益,俗话说就是被人当韭菜割了。其实真正有用的东西不在盘内,而在盘外,不断去深化对区块链技术的理解,看到这一理财产品的长期价值,打一个比方,就像开门锁,注意力不能过分放在门锁上,而应该去尽力寻找钥匙。我又这些电光火石的念想,说明我还不是特别适合投资,还需要继续修炼。 * 认知差异 自己的认知不足,经常会听信圈子里不正确的逻辑,导致错误的判断,最后演变成错误的行为。所以提高认知是重中之重,就像一些欧洲人对区块链并不看好(说现在的区块链产品都是Bullshit),我觉得是欧洲的互联网已经非常落后了,所以他们的认知是有问题的,至少不应该自以为是,以为自己是世界的中心。 * 现行后知 行动很重要,比如我这一次误打误撞地接触到了区块链,虽然没有完完全全看明白这个东西,但是进行了小投入的行动,这个过程中也加深了对这个行业的认知,学习到了很多相关的知识。 * 看好区块链这个技术 我其实对炒币这种行为并不看好,我觉得货币不流通就没有意义,我看好的是实现比特币的区块链技术,是这种新的电子记账方法。并且我看到现在已经有很多好的产品出现,比如[sia.tech](http://sia.tech/)、[zeronet](https://zeronet.io/)。
json metadata{"tags":["cn","blockchain","bitcoin"],"links":["http://sia.tech/","https://zeronet.io/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcn
permlink4dqlkh
title投资区块链初体验
Transaction InfoBlock #12731007/Trx f510ae1bccc42eaa4f749353296326aa973ec58a
View Raw JSON Data
{
  "block": 12731007,
  "op": [
    "comment",
    {
      "author": "heha37",
      "body": "作死的人,欢迎来到区块链的世界。\n\n\n\n几个月之前,看了中本聪的比特币论文,然后就决定进入区块链世界闯一闯。试水的第一件事情是参加了一个币种的ICO,投入了一小部分资金进行尝试,之后该币在一些区块链交易所上市,价格一路疯涨,此时的我很兴奋,对价格的波动很敏感,一直在盯盘,这期间还到一些所谓的“币圈”中看消息、看大家的议论,做了几笔短线交易(事后看都很不理智),最后以卖掉一些币提现、留下一些币期待长期价值为结局。\n\n\n\n这一次经历体验让我领悟颇多,也见识到了自己人性中的弱点,所以我对自己的这一次行为进行一下复盘,总结之后以励再战。\n\n\n\n*  一些不好的闪念\n\n> 怎么回事,一买就跌,一卖就涨?\n\n> 这个币怎么样,别人怎么看?\n\n> 涨得这么凶,发财了!\n\n> 跌得这么狠,完蛋了!\n\n> 刚才发生了什么,我错过了什么?\n\n> 我的运气这么差,为什么别人的这么好?\n\n\n\n我出现的闪念是因为我过于追求短期利益,并且对区块链货币的认识也不够深刻,所以我把注意力都放在的价格的波动上,及其短视地做出了一些错误的交易,导致自己的损失成为别人的短期收益,俗话说就是被人当韭菜割了。其实真正有用的东西不在盘内,而在盘外,不断去深化对区块链技术的理解,看到这一理财产品的长期价值,打一个比方,就像开门锁,注意力不能过分放在门锁上,而应该去尽力寻找钥匙。我又这些电光火石的念想,说明我还不是特别适合投资,还需要继续修炼。\n\n* 认知差异\n\n自己的认知不足,经常会听信圈子里不正确的逻辑,导致错误的判断,最后演变成错误的行为。所以提高认知是重中之重,就像一些欧洲人对区块链并不看好(说现在的区块链产品都是Bullshit),我觉得是欧洲的互联网已经非常落后了,所以他们的认知是有问题的,至少不应该自以为是,以为自己是世界的中心。\n\n* 现行后知\n\n行动很重要,比如我这一次误打误撞地接触到了区块链,虽然没有完完全全看明白这个东西,但是进行了小投入的行动,这个过程中也加深了对这个行业的认知,学习到了很多相关的知识。\n\n* 看好区块链这个技术\n\n我其实对炒币这种行为并不看好,我觉得货币不流通就没有意义,我看好的是实现比特币的区块链技术,是这种新的电子记账方法。并且我看到现在已经有很多好的产品出现,比如[sia.tech](http://sia.tech/)、[zeronet](https://zeronet.io/)。",
      "json_metadata": "{\"tags\":[\"cn\",\"blockchain\",\"bitcoin\"],\"links\":[\"http://sia.tech/\",\"https://zeronet.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "cn",
      "permlink": "4dqlkh",
      "title": "投资区块链初体验"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-06-11T15:51:45",
  "trx_id": "f510ae1bccc42eaa4f749353296326aa973ec58a",
  "trx_in_block": 0,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"name":"heha3737","profile_image":"https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg"}
JSON METADATA
profile{"name":"heha3737","profile_image":"https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg"}
{
  "posting_json_metadata": {
    "profile": {
      "name": "heha3737",
      "profile_image": "https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg"
    }
  },
  "json_metadata": {
    "profile": {
      "name": "heha3737",
      "profile_image": "https://pbs.twimg.com/profile_images/619890136025698308/Cc1CFtsh_400x400.jpg"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM59uk43E3VyJ2NuebNRh6As8SvxBDqEHj2pTD9xGYszVb6E83zn1/1
Active
Single Signature
Public Keys
STM5wgyLj55Ldcn1x7FqPmfeR1tJUzg6WEjCcpTE7n67m8HnrQzoE1/1
Posting
Single Signature
Public Keys
STM8QNX8cccFMra8pAQCPQSjKjZeDtjZXbbKTr8EJNsjvvKgEBfsu1/1
Memo
STM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM59uk43E3VyJ2NuebNRh6As8SvxBDqEHj2pTD9xGYszVb6E83zn",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5wgyLj55Ldcn1x7FqPmfeR1tJUzg6WEjCcpTE7n67m8HnrQzoE",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8QNX8cccFMra8pAQCPQSjKjZeDtjZXbbKTr8EJNsjvvKgEBfsu",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM6uRcF83nvHha6WbpuUhPd2yDsAA6ubcNbzCbZnbPrhkDpMB7FG"
}

Witness Votes

0 / 30
No active witness votes.
[]