Ecoer Logo
sigmoid

@sigmoid

25

Dsrv Labs.

hive.blog/@sigmoid
VOTING POWER0.00%
DOWNVOTE POWER0.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
1.551USD
HIVE
6.251HIVE
HBD
0.000HBD
Own HP
0.000HP

Detailed Balance

HIVE
balance
6.251HIVE
market_balance
0.000HIVE
savings_balance
0.467HIVE
reward_hive_balance
0.000HIVE
HIVE POWER
Own HP
0.000HP
Delegated Out
0.000HP
Delegation In
0.000HP
Effective Power
0.000HP
Reward HP (pending)
3.048HP
HBD
hbd_balance
0.000HBD
hbd_conversions
0.000HBD
hbd_market_balance
0.000HBD
savings_hbd_balance
0.121HBD
reward_hbd_balance
1.182HBD
{
  "balance": "6.251 HIVE",
  "savings_balance": "0.467 HIVE",
  "reward_hive_balance": "0.000 HIVE",
  "vesting_shares": "0.000000 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "0.000000 VESTS",
  "hbd_balance": "0.000 HBD",
  "savings_hbd_balance": "0.121 HBD",
  "reward_hbd_balance": "1.182 HBD"
}

Account Info

namesigmoid
id992192
rank0
reputation0
created2018-05-12T05:00:06
recovery_accountsteem
proxyNone
invited_bynull
post_count87
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2019-11-22T11:20:57
last_root_post2019-11-22T11:20:57
last_vote_time2018-12-28T13:29:27
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votesNone
governance_vote_expiration_ts1969-12-31T23:59:59
balance6.251 HIVE
savings_balance0.467 HIVE
hbd_balance0.000 HBD
savings_hbd_balance0.121 HBD
vesting_shares0.000000 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares0.000000 VESTS
reward_vesting_balance6085.469060 VESTS
vesting_balance0.000 HIVE
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2019-05-03T01:49:36
minedNo
hbd_seconds0
hbd_last_interest_payment2020-03-18T15:09:30
savings_hbd_last_interest_payment2019-02-15T23:13:48
{
  "id": 992192,
  "name": "sigmoid",
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM88SHsdJQQUFUn95yzJs1kGLBhtFXr7eGsJ1bYns12wyZ2GyHJB",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM4zgHjLrLi1w8MnLEgcgi76Sz5psjFNPp7mYvQbzGXgL7jeGHkb",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5itgF2CnNT1fs4xmXKKk3ahQ9znX9bucm4G37sEtTkaaH15YFm",
        1
      ]
    ]
  },
  "memo_key": "STM6oe4V9TPmAs8Pux2Eg9SpFhAXwRtTPeYziAYmNdjDb8VSgwBrz",
  "json_metadata": "{\"profile\":{\"name\":\"SigmoiD\",\"about\":\"Dsrv Labs.\",\"website\":\"http://dsrvlabs.com\",\"cover_image\":\"https://steemitimages.com/DQmNQEbBYYzgiLCCZKky4UfzY84kiwN21LwLop22PYtwNoC/20180309_203350.jpg\",\"profile_image\":\"http://www.dsrvlabs.com/me.jpg\"}}",
  "posting_json_metadata": "{\"profile\":{\"name\":\"SigmoiD\",\"about\":\"Dsrv Labs.\",\"website\":\"http://dsrvlabs.com\",\"cover_image\":\"https://steemitimages.com/DQmNQEbBYYzgiLCCZKky4UfzY84kiwN21LwLop22PYtwNoC/20180309_203350.jpg\",\"profile_image\":\"http://www.dsrvlabs.com/me.jpg\"}}",
  "proxy": "",
  "previous_owner_update": "1970-01-01T00:00:00",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_account_update": "2019-05-03T01:49:36",
  "created": "2018-05-12T05:00:06",
  "mined": false,
  "recovery_account": "steem",
  "last_account_recovery": "1970-01-01T00:00:00",
  "reset_account": "null",
  "comment_count": 0,
  "lifetime_vote_count": 0,
  "post_count": 87,
  "can_vote": true,
  "voting_manabar": {
    "current_mana": 38308285670,
    "last_update_time": 1549890807
  },
  "downvote_manabar": {
    "current_mana": 0,
    "last_update_time": 1526101203
  },
  "voting_power": 0,
  "balance": "6.251 HIVE",
  "savings_balance": "0.467 HIVE",
  "hbd_balance": "0.000 HBD",
  "hbd_seconds": "0",
  "hbd_seconds_last_update": "2020-03-18T15:09:30",
  "hbd_last_interest_payment": "2020-03-18T15:09:30",
  "savings_hbd_balance": "0.121 HBD",
  "savings_hbd_seconds": "0",
  "savings_hbd_seconds_last_update": "2019-02-15T23:13:48",
  "savings_hbd_last_interest_payment": "2019-02-15T23:13:48",
  "savings_withdraw_requests": 0,
  "reward_hbd_balance": "1.182 HBD",
  "reward_hive_balance": "0.000 HIVE",
  "reward_vesting_balance": "6085.469060 VESTS",
  "reward_vesting_hive": "3.048 HIVE",
  "vesting_shares": "0.000000 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "0.000000 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "post_voting_power": "0.000000 VESTS",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "withdrawn": 0,
  "to_withdraw": 0,
  "withdraw_routes": 0,
  "pending_transfers": 0,
  "curation_rewards": 1,
  "posting_rewards": 47090,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "witnesses_voted_for": 0,
  "last_post": "2019-11-22T11:20:57",
  "last_root_post": "2019-11-22T11:20:57",
  "last_vote_time": "2018-12-28T13:29:27",
  "post_bandwidth": 0,
  "pending_claimed_accounts": 0,
  "governance_vote_expiration_ts": "1969-12-31T23:59:59",
  "delayed_votes": [],
  "open_recurrent_transfers": 0,
  "vesting_balance": "0.000 HIVE",
  "reputation": 0,
  "transfer_history": [],
  "market_history": [],
  "post_history": [],
  "vote_history": [],
  "other_history": [],
  "witness_votes": [],
  "tags_usage": [],
  "guest_bloggers": [],
  "rank": 0
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
sigmoidaccount expired: @sigmoid
2022/11/29 03:15:45
accountsigmoid
Transaction InfoBlock #70075090/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 70075090,
  "op": [
    "expired_account_notification",
    {
      "account": "sigmoid"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2022-11-29T03:15:45",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.483 HIVE from power down installment (0.579 HP)
2020/06/17 15:06:27
deposited0.483 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216314 VESTS
Transaction InfoBlock #44373902/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 44373902,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.483 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216314 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-06-17T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.482 HIVE from power down installment (0.579 HP)
2020/06/10 15:06:27
deposited0.482 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #44172795/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 44172795,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.482 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-06-10T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.482 HIVE from power down installment (0.579 HP)
2020/06/03 15:06:27
deposited0.482 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #43971698/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 43971698,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.482 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-06-03T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.482 HIVE from power down installment (0.579 HP)
2020/05/27 15:06:27
deposited0.482 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #43770641/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 43770641,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.482 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-05-27T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.481 HIVE from power down installment (0.579 HP)
2020/05/20 15:06:27
deposited0.481 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #43569652/Virtual Operation 4294967295:4
View Raw JSON Data
{
  "block": 43569652,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.481 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 4,
  "timestamp": "2020-05-20T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.481 HIVE from power down installment (0.579 HP)
2020/05/13 15:06:27
deposited0.481 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #43368667/Virtual Operation 4294967295:152
View Raw JSON Data
{
  "block": 43368667,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.481 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 152,
  "timestamp": "2020-05-13T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.481 HIVE from power down installment (0.579 HP)
2020/05/06 15:06:27
deposited0.481 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #43167701/Virtual Operation 4294967295:393
View Raw JSON Data
{
  "block": 43167701,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.481 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 393,
  "timestamp": "2020-05-06T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.481 HIVE from power down installment (0.579 HP)
2020/04/29 15:06:27
deposited0.481 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #42966991/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 42966991,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.481 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-04-29T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.480 HIVE from power down installment (0.579 HP)
2020/04/22 15:06:27
deposited0.480 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #42766072/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 42766072,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.480 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-04-22T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.480 HIVE from power down installment (0.579 HP)
2020/04/15 15:06:27
deposited0.480 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #42565129/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 42565129,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.480 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-04-15T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.480 HIVE from power down installment (0.579 HP)
2020/04/08 15:06:27
deposited0.480 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #42364222/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 42364222,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.480 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-04-08T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.479 HIVE from power down installment (0.579 HP)
2020/04/01 15:06:27
deposited0.479 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #42163385/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 42163385,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.479 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2020-04-01T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.479 HIVE from power down installment (0.579 HP)
2020/03/25 15:06:27
deposited0.479 HIVE
from accountsigmoid
to accountsigmoid
withdrawn939.216321 VESTS
Transaction InfoBlock #41962767/Virtual Operation 4294967295:11
View Raw JSON Data
{
  "block": 41962767,
  "op": [
    "fill_vesting_withdraw",
    {
      "deposited": "0.479 HIVE",
      "from_account": "sigmoid",
      "to_account": "sigmoid",
      "withdrawn": "939.216321 VESTS"
    }
  ],
  "op_in_trx": 11,
  "timestamp": "2020-03-25T15:06:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidsent 2.500 HBD to @user.dunamu- "9adae8bb-47c0-4522-876a-e343bac784c1"
2020/03/18 15:09:33
amount2.500 HBD
fromsigmoid
memo9adae8bb-47c0-4522-876a-e343bac784c1
touser.dunamu
Transaction InfoBlock #41762626/Trx 50370cac30fe973eb16aa6c1984b3e73a1cee406
View Raw JSON Data
{
  "block": 41762626,
  "op": [
    "transfer",
    {
      "amount": "2.500 HBD",
      "from": "sigmoid",
      "memo": "9adae8bb-47c0-4522-876a-e343bac784c1",
      "to": "user.dunamu"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-03-18T15:09:33",
  "trx_id": "50370cac30fe973eb16aa6c1984b3e73a1cee406",
  "trx_in_block": 10,
  "virtual_op": false
}
sigmoidsent 12.044 HIVE to @user.dunamu- "9adae8bb-47c0-4522-876a-e343bac784c1"
2020/03/18 15:08:12
amount12.044 HIVE
fromsigmoid
memo9adae8bb-47c0-4522-876a-e343bac784c1
touser.dunamu
Transaction InfoBlock #41762599/Trx 8ca270ba8607df0fe1ddcc0d527669fc635c3f69
View Raw JSON Data
{
  "block": 41762599,
  "op": [
    "transfer",
    {
      "amount": "12.044 HIVE",
      "from": "sigmoid",
      "memo": "9adae8bb-47c0-4522-876a-e343bac784c1",
      "to": "user.dunamu"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-03-18T15:08:12",
  "trx_id": "8ca270ba8607df0fe1ddcc0d527669fc635c3f69",
  "trx_in_block": 20,
  "virtual_op": false
}
sigmoidstarted power down of 7.521 HP
2020/03/18 15:06:30
accountsigmoid
vesting shares12209.812166 VESTS
Transaction InfoBlock #41762565/Trx 6cba2bf7da6193e21225210faf9bb26a15cb556c
View Raw JSON Data
{
  "block": 41762565,
  "op": [
    "withdraw_vesting",
    {
      "account": "sigmoid",
      "vesting_shares": "12209.812166 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-03-18T15:06:30",
  "trx_id": "6cba2bf7da6193e21225210faf9bb26a15cb556c",
  "trx_in_block": 75,
  "virtual_op": false
}
2019/11/29 11:20:57
authorsigmoid
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
Transaction InfoBlock #38597254/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 38597254,
  "op": [
    "comment_payout_update",
    {
      "author": "sigmoid",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2019-11-29T11:20:57",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/11/29 08:49:27
authorsigmoid
body@@ -1440,16 +1440,107 @@ %EC%9E%A5%ED%9E%88 %EA%B8%B0%EB%8C%80%EA%B0%80 %EB%90%98%EB%8A%94%EA%B2%83 %EA%B0%99%EC%8A%B5%EB%8B%88%EB%8B%A4. +%0A%0A%EB%8D%94 %EB%A7%8E%EC%9D%80 %EC%A0%95%EB%B3%B4%EB%A5%BC %EC%9B%90%ED%95%98%EC%8B%A0%EB%8B%A4%EB%A9%B4? %EC%95%84%EB%9E%98%EB%A1%9C...%0Ahttps://github.com/dsrvlabs/celo%0A%0Ahttps://github.com/dsrvlabs/celo
json metadata{"tags":["stable","mobile","defi"],"image":["https://cdn.steemitimages.com/DQmbG9NvnHGeBDCruXuF4u4q6GZSKK9Jh61ZjKcCoTtGodb/image.png","https://cdn.steemitimages.com/DQmccePh3X521TJvVWF9JfVWD76mPtaWYB3Zs1y7hjY8QzY/image.png"],"app":"steemit/0.1","format":"markdown","links":["https://github.com/dsrvlabs/celo"]}
parent author
parent permlinkcelo
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
titleCelo: A Multi-Asset Cryptographic Protocol for Decentralized Social Payments
Transaction InfoBlock #38594230/Trx 5e53134380e4d54a72908b578cd090a720532cfe
View Raw JSON Data
{
  "block": 38594230,
  "op": [
    "comment",
    {
      "author": "sigmoid",
      "body": "@@ -1440,16 +1440,107 @@\n %EC%9E%A5%ED%9E%88 %EA%B8%B0%EB%8C%80%EA%B0%80 %EB%90%98%EB%8A%94%EA%B2%83 %EA%B0%99%EC%8A%B5%EB%8B%88%EB%8B%A4.\n+%0A%0A%EB%8D%94 %EB%A7%8E%EC%9D%80 %EC%A0%95%EB%B3%B4%EB%A5%BC %EC%9B%90%ED%95%98%EC%8B%A0%EB%8B%A4%EB%A9%B4? %EC%95%84%EB%9E%98%EB%A1%9C...%0Ahttps://github.com/dsrvlabs/celo%0A%0Ahttps://github.com/dsrvlabs/celo\n",
      "json_metadata": "{\"tags\":[\"stable\",\"mobile\",\"defi\"],\"image\":[\"https://cdn.steemitimages.com/DQmbG9NvnHGeBDCruXuF4u4q6GZSKK9Jh61ZjKcCoTtGodb/image.png\",\"https://cdn.steemitimages.com/DQmccePh3X521TJvVWF9JfVWD76mPtaWYB3Zs1y7hjY8QzY/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"links\":[\"https://github.com/dsrvlabs/celo\"]}",
      "parent_author": "",
      "parent_permlink": "celo",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments",
      "title": "Celo: A Multi-Asset Cryptographic Protocol for Decentralized Social Payments"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-11-29T08:49:27",
  "trx_id": "5e53134380e4d54a72908b578cd090a720532cfe",
  "trx_in_block": 6,
  "virtual_op": false
}
2019/11/22 11:23:45
authorsigmoid
pending payout0.000 HBD
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
rshares0
total vote weight95
votersteeming-hot
weight0 (0.00%)
Transaction InfoBlock #38396078/Trx ce40b5538b7faa6bf68d70aa45978bd2058e662e
View Raw JSON Data
{
  "block": 38396078,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.000 HBD",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments",
      "rshares": 0,
      "total_vote_weight": 95,
      "voter": "steeming-hot",
      "weight": 0
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-11-22T11:23:45",
  "trx_id": "ce40b5538b7faa6bf68d70aa45978bd2058e662e",
  "trx_in_block": 3,
  "virtual_op": true
}
2019/11/22 11:23:45
authorsigmoid
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
votersteeming-hot
weight1 (0.01%)
Transaction InfoBlock #38396078/Trx ce40b5538b7faa6bf68d70aa45978bd2058e662e
View Raw JSON Data
{
  "block": 38396078,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments",
      "voter": "steeming-hot",
      "weight": 1
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-11-22T11:23:45",
  "trx_id": "ce40b5538b7faa6bf68d70aa45978bd2058e662e",
  "trx_in_block": 3,
  "virtual_op": false
}
2019/11/22 11:22:12
authorsigmoid
pending payout0.000 HBD
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
rshares72140614
total vote weight95
voterlaissez-faire
weight8 (0.08%)
Transaction InfoBlock #38396047/Trx 743f544ff55dcc169f05503c50b98f1dbaefc129
View Raw JSON Data
{
  "block": 38396047,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.000 HBD",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments",
      "rshares": 72140614,
      "total_vote_weight": 95,
      "voter": "laissez-faire",
      "weight": 8
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-11-22T11:22:12",
  "trx_id": "743f544ff55dcc169f05503c50b98f1dbaefc129",
  "trx_in_block": 37,
  "virtual_op": true
}
2019/11/22 11:22:12
authorsigmoid
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
voterlaissez-faire
weight10000 (100.00%)
Transaction InfoBlock #38396047/Trx 743f544ff55dcc169f05503c50b98f1dbaefc129
View Raw JSON Data
{
  "block": 38396047,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments",
      "voter": "laissez-faire",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-11-22T11:22:12",
  "trx_id": "743f544ff55dcc169f05503c50b98f1dbaefc129",
  "trx_in_block": 37,
  "virtual_op": false
}
2019/11/22 11:21:51
authorsigmoid
pending payout0.000 HBD
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
rshares118122232
total vote weight58
voteranomaly
weight9 (0.09%)
Transaction InfoBlock #38396040/Trx 351022546709ee5ecd6c1119b8c7039428c5dcb9
View Raw JSON Data
{
  "block": 38396040,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.000 HBD",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments",
      "rshares": 118122232,
      "total_vote_weight": 58,
      "voter": "anomaly",
      "weight": 9
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-11-22T11:21:51",
  "trx_id": "351022546709ee5ecd6c1119b8c7039428c5dcb9",
  "trx_in_block": 22,
  "virtual_op": true
}
2019/11/22 11:21:51
authorsigmoid
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
voteranomaly
weight100 (1.00%)
Transaction InfoBlock #38396040/Trx 351022546709ee5ecd6c1119b8c7039428c5dcb9
View Raw JSON Data
{
  "block": 38396040,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments",
      "voter": "anomaly",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-11-22T11:21:51",
  "trx_id": "351022546709ee5ecd6c1119b8c7039428c5dcb9",
  "trx_in_block": 22,
  "virtual_op": false
}
2019/11/22 11:21:00
authorsigmoid
body안녕하세요, Sigmoid 입니다. (이래저래 정신이 많이 없어서 포스팅이 좀 뜸했네요.) 오늘은 여러분들께 Celo라는 프로젝트의 백서를 소개하려고 합니다. Celo는 Stable Coin을 발행할수 있는 플랫폼인데, 제가 이 프로젝트를 주시하고 있는 이유는 기술적 섹시함 보다는 ease-of-use와 stable-value 이렇게 두가지 입니다. celo팀은 암호화폐가 더 저렴하고 빠르며, 안전하게 검증가능한 결제수단이라고 정의합니다. 게다가 "Programmable" 하기때문에 다양한 방식으로 사용할 수 있죠. 그럼에도 사용자들이 쉽게 쓸수 없는 이유는, 1. 고정된 코인 발행 룰과 예측 할수 없는 수요때문에 가격변동이 심하고, 2. 코인을 주고받기 위해 사용자끼리 서로 공개키와 개인키를 준비해야하는 진입장벽 때문입니다. (요즘 많은 분들이 비트코인을 Store Value 로 정의하시는 것 같습니다.) 참고로, 이더리움 구현체인 Geth를 포크하여 Istanbul BFT 합의를 붙여 Proof of Stake 기반으로 변경하였습니다. 쉬운 송금을 위해, celo는 Address-Based Encryption을 사용합니다. 유저들은 자신의 휴대폰 번호나 이메일 주소를 사용하여 돈을 보낼수 있게 됩니다.이를 지원하기위해 address -> public key 맵핑테이블을 사용하는데 지갑을 설치해보면 휴대폰만으로 인증이 되고, celo를 모르는 친구에게 celo dollar를 보낼수도 있네요. ![](https://cdn.steemitimages.com/DQmbG9NvnHGeBDCruXuF4u4q6GZSKK9Jh61ZjKcCoTtGodb/image.png) 받는 사람 입장에서는 celo 지갑설치시 전화번호로 인증을 받게되면 publickey가 생성되며, 지갑에 이미 돈이 들어와있게 됩니다. stable한 celo dollar상태를 만들기 위해서는 아래와 같은 로직으로 가격을 유지하게 됩니다. 먼저 celo dollar가 수요가 많아져서 1$보다 가격이 높아질 경우, celo dollar를 발행합니다. 이 돈으로 dex에서 celo gold를 사서 리저브에 넣고요. 수요가 적어져서 1$보다 가격이 낮아질 경우, 리저브의 celo gold를 사용해서 celo dollar를 산 후, burn해 버립니다. 그림으로 보실까요? ![](https://cdn.steemitimages.com/DQmccePh3X521TJvVWF9JfVWD76mPtaWYB3Zs1y7hjY8QzY/image.png) 대부분의 stable coin의 경우 오라클 문제가 발생합니다(1$여부를 확인하기 위해). celo의 경우는 dex를 사용하여 이부분을 해결하네요. 많은 사람들이 블록체인은 신뢰의 기술이라고 합니다. celo는 기술적 신뢰위에 사람을 위한 신뢰를 만들고자 하는것 같습니다. 스테이블 코인이 어떻게 신뢰를 만들고 발전시켜 나갈지 굉장히 기대가 되는것 같습니다.
json metadata{"tags":["celo","stable","mobile","defi"],"image":["https://cdn.steemitimages.com/DQmbG9NvnHGeBDCruXuF4u4q6GZSKK9Jh61ZjKcCoTtGodb/image.png","https://cdn.steemitimages.com/DQmccePh3X521TJvVWF9JfVWD76mPtaWYB3Zs1y7hjY8QzY/image.png"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkcelo
permlinkcelo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments
titleCelo: A Multi-Asset Cryptographic Protocol for Decentralized Social Payments
Transaction InfoBlock #38396023/Trx 514ee924770f5d1ed1e2fdc567242d5e8f8eb455
View Raw JSON Data
{
  "block": 38396023,
  "op": [
    "comment",
    {
      "author": "sigmoid",
      "body": "안녕하세요, Sigmoid 입니다. \n(이래저래 정신이 많이 없어서 포스팅이 좀 뜸했네요.)\n오늘은 여러분들께 Celo라는 프로젝트의 백서를 소개하려고 합니다.\n\nCelo는 Stable Coin을 발행할수 있는 플랫폼인데, 제가 이 프로젝트를 주시하고 있는 이유는 기술적 섹시함 보다는\nease-of-use와 stable-value 이렇게 두가지 입니다.\n\ncelo팀은 암호화폐가 더 저렴하고 빠르며, 안전하게 검증가능한 결제수단이라고 정의합니다.  게다가 \"Programmable\" 하기때문에 다양한 방식으로 사용할 수 있죠.\n\n그럼에도 사용자들이 쉽게 쓸수 없는 이유는, \n1. 고정된 코인 발행 룰과 예측 할수 없는 수요때문에 가격변동이 심하고,\n2. 코인을 주고받기 위해 사용자끼리 서로 공개키와 개인키를 준비해야하는 진입장벽 때문입니다.\n(요즘 많은 분들이 비트코인을 Store Value 로 정의하시는 것 같습니다.)\n\n참고로, 이더리움 구현체인 Geth를 포크하여 Istanbul BFT 합의를 붙여 Proof of Stake 기반으로 변경하였습니다.\n\n\n쉬운 송금을 위해, celo는 Address-Based Encryption을 사용합니다. 유저들은 자신의 휴대폰 번호나 이메일 주소를 사용하여 돈을 보낼수 있게 됩니다.이를 지원하기위해 address -> public key 맵핑테이블을 사용하는데\n지갑을 설치해보면 휴대폰만으로 인증이 되고, celo를 모르는 친구에게 celo dollar를  보낼수도 있네요.\n![](https://cdn.steemitimages.com/DQmbG9NvnHGeBDCruXuF4u4q6GZSKK9Jh61ZjKcCoTtGodb/image.png)\n\n받는 사람 입장에서는 celo 지갑설치시 전화번호로 인증을 받게되면 publickey가 생성되며, 지갑에 이미 돈이 들어와있게 됩니다.\n\nstable한 celo dollar상태를 만들기 위해서는 아래와 같은 로직으로 가격을 유지하게 됩니다.\n먼저 celo dollar가 수요가 많아져서 1$보다 가격이 높아질 경우, celo dollar를 발행합니다.\n이 돈으로 dex에서 celo gold를 사서 리저브에 넣고요.\n수요가 적어져서 1$보다 가격이 낮아질 경우, 리저브의 celo gold를 사용해서 celo dollar를 산 후, burn해 버립니다.\n그림으로 보실까요?\n![](https://cdn.steemitimages.com/DQmccePh3X521TJvVWF9JfVWD76mPtaWYB3Zs1y7hjY8QzY/image.png)\n\n대부분의 stable coin의 경우 오라클 문제가 발생합니다(1$여부를 확인하기 위해). celo의 경우는 dex를 사용하여 이부분을 해결하네요.\n\n많은 사람들이 블록체인은 신뢰의 기술이라고 합니다. celo는 기술적 신뢰위에 사람을 위한 신뢰를 만들고자 하는것 같습니다. 스테이블 코인이 어떻게 신뢰를 만들고 발전시켜 나갈지 굉장히 기대가 되는것 같습니다.",
      "json_metadata": "{\"tags\":[\"celo\",\"stable\",\"mobile\",\"defi\"],\"image\":[\"https://cdn.steemitimages.com/DQmbG9NvnHGeBDCruXuF4u4q6GZSKK9Jh61ZjKcCoTtGodb/image.png\",\"https://cdn.steemitimages.com/DQmccePh3X521TJvVWF9JfVWD76mPtaWYB3Zs1y7hjY8QzY/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "celo",
      "permlink": "celo-a-multi-asset-cryptographic-protocol-for-decentralized-social-payments",
      "title": "Celo: A Multi-Asset Cryptographic Protocol for Decentralized Social Payments"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-11-22T11:21:00",
  "trx_id": "514ee924770f5d1ed1e2fdc567242d5e8f8eb455",
  "trx_in_block": 15,
  "virtual_op": false
}
2019/07/21 08:27:06
authoretc.korea
body안녕하세요 이더리움 클래식 코리아입니다. 혹시 해당 프로젝트 관련해서 개인적으로 연락을 드리고 싶은데, 혹시 가능하신가요?
json metadata{"tags":["ethereum"],"app":"steemit/0.1"}
parent authorsigmoid
parent permlinkov-net
permlinkpuzgt1
title
Transaction InfoBlock #34851345/Trx a3c4a485f9ac395f657047cff8874d7f10643132
View Raw JSON Data
{
  "block": 34851345,
  "op": [
    "comment",
    {
      "author": "etc.korea",
      "body": "안녕하세요 이더리움 클래식 코리아입니다. \n\n혹시 해당 프로젝트 관련해서 개인적으로 연락을 드리고 싶은데, 혹시 가능하신가요?",
      "json_metadata": "{\"tags\":[\"ethereum\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "sigmoid",
      "parent_permlink": "ov-net",
      "permlink": "puzgt1",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-07-21T08:27:06",
  "trx_id": "a3c4a485f9ac395f657047cff8874d7f10643132",
  "trx_in_block": 0,
  "virtual_op": false
}
jaydihreplied to @sigmoid / puq2x7
2019/07/16 06:48:45
authorjaydih
bodyㅎㅎ 그야말로 비트코인 “그다음”이죠. 꼭 추락한 외계인 UFO와 같이 느껴진다랄까요. 이 곳에서 블록체인 기술들을 많이 추출해서 사용하는 것 같아요.
json metadata{"tags":["nxt"],"app":"steemit/0.1"}
parent authorsigmoid
parent permlinkmy-next-topic-nxt-project
permlinkpuq2x7
title
Transaction InfoBlock #34705545/Trx 2ae4e0d15f0fdddf275575bd1198ca24f33d5737
View Raw JSON Data
{
  "block": 34705545,
  "op": [
    "comment",
    {
      "author": "jaydih",
      "body": "ㅎㅎ 그야말로 비트코인 “그다음”이죠. \n꼭 추락한 외계인 UFO와 같이 느껴진다랄까요. 이 곳에서 블록체인 기술들을 많이 추출해서 사용하는 것 같아요.",
      "json_metadata": "{\"tags\":[\"nxt\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "sigmoid",
      "parent_permlink": "my-next-topic-nxt-project",
      "permlink": "puq2x7",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-07-16T06:48:45",
  "trx_id": "2ae4e0d15f0fdddf275575bd1198ca24f33d5737",
  "trx_in_block": 30,
  "virtual_op": false
}
2019/07/08 13:32:57
authorsigmoid
permlinkmy-next-topic-nxt-project
votermilkysun913
weight10000 (100.00%)
Transaction InfoBlock #34483465/Trx b0737c0c7747caa3bc8a2a05d741b7ea1b459ea3
View Raw JSON Data
{
  "block": 34483465,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "my-next-topic-nxt-project",
      "voter": "milkysun913",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-07-08T13:32:57",
  "trx_id": "b0737c0c7747caa3bc8a2a05d741b7ea1b459ea3",
  "trx_in_block": 7,
  "virtual_op": false
}
2019/07/08 12:06:18
authorsigmoid
permlinkmy-next-topic-nxt-project
votercarthago
weight10000 (100.00%)
Transaction InfoBlock #34481735/Trx 02ddb2a62c476ce51c303994e3589d3dd6e9b56d
View Raw JSON Data
{
  "block": 34481735,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "my-next-topic-nxt-project",
      "voter": "carthago",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-07-08T12:06:18",
  "trx_id": "02ddb2a62c476ce51c303994e3589d3dd6e9b56d",
  "trx_in_block": 30,
  "virtual_op": false
}
2019/07/02 14:15:21
authorsigmoid
permlinkmy-next-topic-nxt-project
Transaction InfoBlock #34311815/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 34311815,
  "op": [
    "comment_payout_update",
    {
      "author": "sigmoid",
      "permlink": "my-next-topic-nxt-project"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2019-07-02T14:15:21",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
serginoeffective vote applied for @sigmoid / my-next-topic-nxt-project
2019/06/25 14:24:48
authorsigmoid
pending payout0.000 HBD
permlinkmy-next-topic-nxt-project
rshares746382882
total vote weight27772
votersergino
weight17403
Transaction InfoBlock #34110627/Trx c5c02aad2754c84752559438d9791b2bd00d9d22
View Raw JSON Data
{
  "block": 34110627,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.000 HBD",
      "permlink": "my-next-topic-nxt-project",
      "rshares": 746382882,
      "total_vote_weight": 27772,
      "voter": "sergino",
      "weight": 17403
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-06-25T14:24:48",
  "trx_id": "c5c02aad2754c84752559438d9791b2bd00d9d22",
  "trx_in_block": 24,
  "virtual_op": true
}
2019/06/25 14:24:48
authorsigmoid
permlinkmy-next-topic-nxt-project
votersergino
weight400 (4.00%)
Transaction InfoBlock #34110627/Trx c5c02aad2754c84752559438d9791b2bd00d9d22
View Raw JSON Data
{
  "block": 34110627,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "my-next-topic-nxt-project",
      "voter": "sergino",
      "weight": 400
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-25T14:24:48",
  "trx_id": "c5c02aad2754c84752559438d9791b2bd00d9d22",
  "trx_in_block": 24,
  "virtual_op": false
}
sigmoidpublished a new post: my-next-topic-nxt-project
2019/06/25 14:15:24
authorsigmoid
bodyHi everyone. It's been a long time. A years ago, I decided that write code analysis blog about Ethereum. Because, unlike most block chain projects, this project has good leader, many nice contributors, quality documentations Through managing this blog, I archived many thing. Little fame in korea blockchain industry, and various pitching opportunities in big conferences (devstamp 2018, ethcon.kr 2019, devground 2019 and so on) Most of all, what I got, I founded my own blockchain lab in seoul, korea. Our website is here: www.dsrvlabs.com (Visit anytime, when you want!) (Non-profit, So poor, Help us) Some days ago, I met one friend who work in Jelurida foundation. He introduce their project to me, and that was very impressive. So I scanning jelurida's white papers and FIND this amazing picture. ![](https://cdn.steemitimages.com/DQmRkcr7VHWVP6bR9uPVPPLNm7fxz4FKsJE9eUnHRedVfgg/image.png) (from: https://www.jelurida.com/sites/default/files/JeluridaWhitepaper.pdf) Can you find why I decided nxt as a my next topic? See their research timeline 2013-2015 - naming service - messaging - voting - pruning - shuffling They have been doing research about these topics what still difficult to solve, very early-stage of blockchain. (At that time I did not know what blockchain is) So, with my respect for old gurus, I will start nxt code analysis in my blog from today. Please look forward to my next article!! > Sorry for lack of my english writing skill :)
json metadata{"tags":["nxt","ardor","jelurida"],"image":["https://cdn.steemitimages.com/DQmRkcr7VHWVP6bR9uPVPPLNm7fxz4FKsJE9eUnHRedVfgg/image.png"],"links":["https://www.jelurida.com/sites/default/files/JeluridaWhitepaper.pdf"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinknxt
permlinkmy-next-topic-nxt-project
titleMy next topic - Nxt project
Transaction InfoBlock #34110439/Trx 18200712e9a350abd0d7d278a952bcae615f5eb6
View Raw JSON Data
{
  "block": 34110439,
  "op": [
    "comment",
    {
      "author": "sigmoid",
      "body": "Hi everyone.\nIt's been a long time.\n\nA years ago,  I decided that write code analysis blog about Ethereum.\nBecause, unlike most block chain projects, this project has good leader, many nice contributors, quality documentations \n\nThrough managing this blog, I archived many thing.\nLittle fame in korea blockchain industry, and various pitching  opportunities in big conferences\n(devstamp 2018, ethcon.kr 2019, devground 2019 and so on)\n\nMost of all, what I got, I founded my own blockchain lab in seoul, korea. \nOur website is here:  www.dsrvlabs.com (Visit anytime, when you want!)\n(Non-profit, So poor, Help us) \n\nSome days ago, I met one friend who work in Jelurida foundation.\nHe introduce their project to me, and that was very impressive. \nSo I scanning jelurida's white papers and FIND this amazing picture.\n\n![](https://cdn.steemitimages.com/DQmRkcr7VHWVP6bR9uPVPPLNm7fxz4FKsJE9eUnHRedVfgg/image.png)\n (from: https://www.jelurida.com/sites/default/files/JeluridaWhitepaper.pdf)\n\nCan you find why I decided nxt as a my next topic?\nSee their research timeline 2013-2015\n\n- naming service\n- messaging\n- voting\n- pruning\n- shuffling\n\nThey have been doing research about these topics what still difficult to solve, very early-stage of blockchain. \n(At that time I did not know what blockchain is)\n\nSo, with my respect for old gurus, I will start nxt code analysis in my blog from today.\nPlease look forward to my next article!!\n\n> Sorry for lack of my english writing skill :)",
      "json_metadata": "{\"tags\":[\"nxt\",\"ardor\",\"jelurida\"],\"image\":[\"https://cdn.steemitimages.com/DQmRkcr7VHWVP6bR9uPVPPLNm7fxz4FKsJE9eUnHRedVfgg/image.png\"],\"links\":[\"https://www.jelurida.com/sites/default/files/JeluridaWhitepaper.pdf\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "nxt",
      "permlink": "my-next-topic-nxt-project",
      "title": "My next topic - Nxt project"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-25T14:15:24",
  "trx_id": "18200712e9a350abd0d7d278a952bcae615f5eb6",
  "trx_in_block": 18,
  "virtual_op": false
}
2019/06/05 08:36:12
authorsigmoid
permlinkevent-for-outside-watchers
Transaction InfoBlock #33528568/Virtual Operation 4294967295:64
View Raw JSON Data
{
  "block": 33528568,
  "op": [
    "comment_payout_update",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers"
    }
  ],
  "op_in_trx": 64,
  "timestamp": "2019-06-05T08:36:12",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.038 HBD reward share for event-for-outside-watchers
2019/06/05 08:36:12
authorsigmoid
author rewards80
beneficiary payout value0.000 HBD
curator payout value0.006 HBD
payout0.038 HBD
permlinkevent-for-outside-watchers
total payout value0.030 HBD
Transaction InfoBlock #33528568/Virtual Operation 4294967295:63
View Raw JSON Data
{
  "block": 33528568,
  "op": [
    "comment_reward",
    {
      "author": "sigmoid",
      "author_rewards": 80,
      "beneficiary_payout_value": "0.000 HBD",
      "curator_payout_value": "0.006 HBD",
      "payout": "0.038 HBD",
      "permlink": "event-for-outside-watchers",
      "total_payout_value": "0.030 HBD"
    }
  ],
  "op_in_trx": 63,
  "timestamp": "2019-06-05T08:36:12",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.015 HBD, 0.049 HP author reward for @sigmoid / event-for-outside-watchers
2019/06/05 08:36:12
authorsigmoid
curators vesting payout33.867491 VESTS
hbd payout0.015 HBD
hive payout0.000 HIVE
payout must be claimedtrue
permlinkevent-for-outside-watchers
vesting payout79.688215 VESTS
Transaction InfoBlock #33528568/Virtual Operation 4294967295:62
View Raw JSON Data
{
  "block": 33528568,
  "op": [
    "author_reward",
    {
      "author": "sigmoid",
      "curators_vesting_payout": "33.867491 VESTS",
      "hbd_payout": "0.015 HBD",
      "hive_payout": "0.000 HIVE",
      "payout_must_be_claimed": true,
      "permlink": "event-for-outside-watchers",
      "vesting_payout": "79.688215 VESTS"
    }
  ],
  "op_in_trx": 62,
  "timestamp": "2019-06-05T08:36:12",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidupdated payout for ps1iu1
2019/06/01 03:25:15
authorsigmoid
permlinkps1iu1
Transaction InfoBlock #33407281/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 33407281,
  "op": [
    "comment_payout_update",
    {
      "author": "sigmoid",
      "permlink": "ps1iu1"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2019-06-01T03:25:15",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sct.cu12effective vote applied for @sigmoid / event-for-outside-watchers
2019/05/30 03:57:18
authorsigmoid
pending payout0.044 HBD
permlinkevent-for-outside-watchers
rshares8658498445
total vote weight268581
votersct.cu12
weight16515
Transaction InfoBlock #33350380/Trx bfb302dfbc205f2939f5dfa8c95be00592471d02
View Raw JSON Data
{
  "block": 33350380,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.044 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 8658498445,
      "total_vote_weight": 268581,
      "voter": "sct.cu12",
      "weight": 16515
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-30T03:57:18",
  "trx_id": "bfb302dfbc205f2939f5dfa8c95be00592471d02",
  "trx_in_block": 40,
  "virtual_op": true
}
2019/05/30 03:57:18
authorsigmoid
permlinkevent-for-outside-watchers
votersct.cu12
weight5000 (50.00%)
Transaction InfoBlock #33350380/Trx bfb302dfbc205f2939f5dfa8c95be00592471d02
View Raw JSON Data
{
  "block": 33350380,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "sct.cu12",
      "weight": 5000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-30T03:57:18",
  "trx_id": "bfb302dfbc205f2939f5dfa8c95be00592471d02",
  "trx_in_block": 40,
  "virtual_op": false
}
2019/05/29 14:14:00
authorsteemitboard
bodyCongratulations @sigmoid! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) : <table><tr><td><img src="https://steemitimages.com/60x70/http://steemitboard.com/@sigmoid/voted.png?201905291226"></td><td>You received more than 250 upvotes. Your next target is to reach 500 upvotes.</td></tr> </table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@sigmoid) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=sigmoid)_</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorsigmoid
parent permlinkevent-for-outside-watchers
permlinksteemitboard-notify-sigmoid-20190529t141359000z
title
Transaction InfoBlock #33333931/Trx d532bfe50c002eae5fb7a930b0bdca72f31d3c38
View Raw JSON Data
{
  "block": 33333931,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @sigmoid! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :\n\n<table><tr><td><img src=\"https://steemitimages.com/60x70/http://steemitboard.com/@sigmoid/voted.png?201905291226\"></td><td>You received more than 250 upvotes. Your next target is to reach 500 upvotes.</td></tr>\n</table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@sigmoid) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=sigmoid)_</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "sigmoid",
      "parent_permlink": "event-for-outside-watchers",
      "permlink": "steemitboard-notify-sigmoid-20190529t141359000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T14:14:00",
  "trx_id": "d532bfe50c002eae5fb7a930b0bdca72f31d3c38",
  "trx_in_block": 67,
  "virtual_op": false
}
sct.cu14effective vote applied for @sigmoid / event-for-outside-watchers
2019/05/29 11:40:57
authorsigmoid
pending payout0.038 HBD
permlinkevent-for-outside-watchers
rshares15254774313
total vote weight252066
votersct.cu14
weight29096
Transaction InfoBlock #33330872/Trx c49ad29bae219765a57442d53d7cdcefdfe82512
View Raw JSON Data
{
  "block": 33330872,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.038 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 15254774313,
      "total_vote_weight": 252066,
      "voter": "sct.cu14",
      "weight": 29096
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T11:40:57",
  "trx_id": "c49ad29bae219765a57442d53d7cdcefdfe82512",
  "trx_in_block": 11,
  "virtual_op": true
}
2019/05/29 11:40:57
authorsigmoid
permlinkevent-for-outside-watchers
votersct.cu14
weight10000 (100.00%)
Transaction InfoBlock #33330872/Trx c49ad29bae219765a57442d53d7cdcefdfe82512
View Raw JSON Data
{
  "block": 33330872,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "sct.cu14",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T11:40:57",
  "trx_id": "c49ad29bae219765a57442d53d7cdcefdfe82512",
  "trx_in_block": 11,
  "virtual_op": false
}
2019/05/29 10:13:45
authorlindaflyhigh
body안녕하세요 sigmoid님 좋은 하루 보내세요!! ![Turtle-lv1.gif](https://cdn.steemitimages.com/DQmcvEvJCUxXA59xtrfB6kNefP9sr2rYyv2az83Qu26zaGb/Turtle-01-june.gif)
json metadata
parent authorsigmoid
parent permlinkevent-for-outside-watchers
permlinkre-event-for-outside-watchers-20190529t101341
title
Transaction InfoBlock #33329128/Trx 384c8036a3596be8e26852d34aa20572765dff8a
View Raw JSON Data
{
  "block": 33329128,
  "op": [
    "comment",
    {
      "author": "lindaflyhigh",
      "body": "안녕하세요 sigmoid님\n\n좋은 하루 보내세요!!\n\n![Turtle-lv1.gif](https://cdn.steemitimages.com/DQmcvEvJCUxXA59xtrfB6kNefP9sr2rYyv2az83Qu26zaGb/Turtle-01-june.gif)",
      "json_metadata": "",
      "parent_author": "sigmoid",
      "parent_permlink": "event-for-outside-watchers",
      "permlink": "re-event-for-outside-watchers-20190529t101341",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T10:13:45",
  "trx_id": "384c8036a3596be8e26852d34aa20572765dff8a",
  "trx_in_block": 12,
  "virtual_op": false
}
2019/05/29 10:13:39
authorsigmoid
pending payout0.029 HBD
permlinkevent-for-outside-watchers
rshares744483056
total vote weight222970
voterlindaflyhigh
weight1420 (14.20%)
Transaction InfoBlock #33329126/Trx ff352279903ebb573e23028a0a0387ff216f9d12
View Raw JSON Data
{
  "block": 33329126,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.029 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 744483056,
      "total_vote_weight": 222970,
      "voter": "lindaflyhigh",
      "weight": 1420
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T10:13:39",
  "trx_id": "ff352279903ebb573e23028a0a0387ff216f9d12",
  "trx_in_block": 5,
  "virtual_op": true
}
2019/05/29 10:13:39
authorsigmoid
permlinkevent-for-outside-watchers
voterlindaflyhigh
weight100 (1.00%)
Transaction InfoBlock #33329126/Trx ff352279903ebb573e23028a0a0387ff216f9d12
View Raw JSON Data
{
  "block": 33329126,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "lindaflyhigh",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T10:13:39",
  "trx_id": "ff352279903ebb573e23028a0a0387ff216f9d12",
  "trx_in_block": 5,
  "virtual_op": false
}
2019/05/29 10:00:48
authoreunsik
body제가 알 수 없는 이더리움 설계 철학과 솔리디티라는 난해한 프로그램 언어에 관한 글이군요. 제가 이해하지 못하더라도 이런 글을 읽고 이해할 사람은 많을 것 같아요. 스팀잇 판에는 워낙 날고 기는 사람이 많으니까요. 용기를 내서 많이 써주세요.
json metadata{"tags":["ethereum","sct"],"app":"steemcoinpan/0.1"}
parent authorsigmoid
parent permlinkevent-for-outside-watchers
permlinkre-sigmoid-event-for-outside-watchers-20190529t100038551z
title
Transaction InfoBlock #33328869/Trx 49d22903fc0cc54fa3c7aa579349f830def69a1c
View Raw JSON Data
{
  "block": 33328869,
  "op": [
    "comment",
    {
      "author": "eunsik",
      "body": "제가 알 수 없는 이더리움 설계 철학과 솔리디티라는 난해한 프로그램 언어에 관한 글이군요. 제가 이해하지 못하더라도 이런 글을 읽고 이해할 사람은 많을 것 같아요. 스팀잇 판에는 워낙 날고 기는 사람이 많으니까요. 용기를 내서 많이 써주세요.",
      "json_metadata": "{\"tags\":[\"ethereum\",\"sct\"],\"app\":\"steemcoinpan/0.1\"}",
      "parent_author": "sigmoid",
      "parent_permlink": "event-for-outside-watchers",
      "permlink": "re-sigmoid-event-for-outside-watchers-20190529t100038551z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T10:00:48",
  "trx_id": "49d22903fc0cc54fa3c7aa579349f830def69a1c",
  "trx_in_block": 3,
  "virtual_op": false
}
sct.cu16effective vote applied for @sigmoid / event-for-outside-watchers
2019/05/29 09:25:57
authorsigmoid
pending payout0.028 HBD
permlinkevent-for-outside-watchers
rshares6361714292
total vote weight221550
votersct.cu16
weight12134
Transaction InfoBlock #33328172/Trx f37a96bb43c09c507d105051d0d3c3b25bf8755b
View Raw JSON Data
{
  "block": 33328172,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.028 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 6361714292,
      "total_vote_weight": 221550,
      "voter": "sct.cu16",
      "weight": 12134
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T09:25:57",
  "trx_id": "f37a96bb43c09c507d105051d0d3c3b25bf8755b",
  "trx_in_block": 17,
  "virtual_op": true
}
2019/05/29 09:25:57
authorsigmoid
permlinkevent-for-outside-watchers
votersct.cu16
weight3000 (30.00%)
Transaction InfoBlock #33328172/Trx f37a96bb43c09c507d105051d0d3c3b25bf8755b
View Raw JSON Data
{
  "block": 33328172,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "sct.cu16",
      "weight": 3000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T09:25:57",
  "trx_id": "f37a96bb43c09c507d105051d0d3c3b25bf8755b",
  "trx_in_block": 17,
  "virtual_op": false
}
2019/05/29 09:25:51
authorsct.cu16
body이더리움 개발 관련 글이네요. 내용을 파악하긴 힘들지만 보팅하고 갑니다. (큐레이터 중 개발 전문가가 있었으면 하는 생각이 문득 듭니다.)
json metadata{"tags":["ethereum","sct"],"app":"steemcoinpan/0.1"}
parent authorsigmoid
parent permlinkevent-for-outside-watchers
permlinkre-sigmoid-event-for-outside-watchers-20190529t092415710z
title
Transaction InfoBlock #33328170/Trx f5439a8c6dcb9ab3cdddefcf4ab3089d9ab287df
View Raw JSON Data
{
  "block": 33328170,
  "op": [
    "comment",
    {
      "author": "sct.cu16",
      "body": "이더리움 개발 관련 글이네요. \n내용을 파악하긴 힘들지만 보팅하고 갑니다. (큐레이터 중 개발 전문가가 있었으면 하는 생각이 문득 듭니다.)",
      "json_metadata": "{\"tags\":[\"ethereum\",\"sct\"],\"app\":\"steemcoinpan/0.1\"}",
      "parent_author": "sigmoid",
      "parent_permlink": "event-for-outside-watchers",
      "permlink": "re-sigmoid-event-for-outside-watchers-20190529t092415710z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T09:25:51",
  "trx_id": "f5439a8c6dcb9ab3cdddefcf4ab3089d9ab287df",
  "trx_in_block": 39,
  "virtual_op": false
}
2019/05/29 08:55:30
authorsct.cu10
body꾸준히 글을 써주세요. 응원합니다.
json metadata{"tags":["ethereum","sct"],"app":"steemcoinpan/0.1"}
parent authorsigmoid
parent permlinkevent-for-outside-watchers
permlinkre-sigmoid-event-for-outside-watchers-20190529t085527814z
title
Transaction InfoBlock #33327563/Trx 7d8cc53138f00b2241aa6ee88311165097558561
View Raw JSON Data
{
  "block": 33327563,
  "op": [
    "comment",
    {
      "author": "sct.cu10",
      "body": "꾸준히 글을 써주세요.  응원합니다.",
      "json_metadata": "{\"tags\":[\"ethereum\",\"sct\"],\"app\":\"steemcoinpan/0.1\"}",
      "parent_author": "sigmoid",
      "parent_permlink": "event-for-outside-watchers",
      "permlink": "re-sigmoid-event-for-outside-watchers-20190529t085527814z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:55:30",
  "trx_id": "7d8cc53138f00b2241aa6ee88311165097558561",
  "trx_in_block": 36,
  "virtual_op": false
}
sct.cu10effective vote applied for @sigmoid / event-for-outside-watchers
2019/05/29 08:55:15
authorsigmoid
pending payout0.025 HBD
permlinkevent-for-outside-watchers
rshares21845202120
total vote weight209416
votersct.cu10
weight70525
Transaction InfoBlock #33327558/Trx 142e424f5c387afa62fc7180aeb34600ba00f9f9
View Raw JSON Data
{
  "block": 33327558,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.025 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 21845202120,
      "total_vote_weight": 209416,
      "voter": "sct.cu10",
      "weight": 70525
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T08:55:15",
  "trx_id": "142e424f5c387afa62fc7180aeb34600ba00f9f9",
  "trx_in_block": 8,
  "virtual_op": true
}
2019/05/29 08:55:15
authorsigmoid
permlinkevent-for-outside-watchers
votersct.cu10
weight10000 (100.00%)
Transaction InfoBlock #33327558/Trx 142e424f5c387afa62fc7180aeb34600ba00f9f9
View Raw JSON Data
{
  "block": 33327558,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "sct.cu10",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:55:15",
  "trx_id": "142e424f5c387afa62fc7180aeb34600ba00f9f9",
  "trx_in_block": 8,
  "virtual_op": false
}
sct.cu18effective vote applied for @sigmoid / event-for-outside-watchers
2019/05/29 08:52:45
authorsigmoid
pending payout0.011 HBD
permlinkevent-for-outside-watchers
rshares9791139822
total vote weight138891
votersct.cu18
weight37350
Transaction InfoBlock #33327508/Trx 382cdcf1a2ff24df0783466d10c91a54cd1e6f57
View Raw JSON Data
{
  "block": 33327508,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.011 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 9791139822,
      "total_vote_weight": 138891,
      "voter": "sct.cu18",
      "weight": 37350
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T08:52:45",
  "trx_id": "382cdcf1a2ff24df0783466d10c91a54cd1e6f57",
  "trx_in_block": 35,
  "virtual_op": true
}
2019/05/29 08:52:45
authorsigmoid
permlinkevent-for-outside-watchers
votersct.cu18
weight4800 (48.00%)
Transaction InfoBlock #33327508/Trx 382cdcf1a2ff24df0783466d10c91a54cd1e6f57
View Raw JSON Data
{
  "block": 33327508,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "sct.cu18",
      "weight": 4800
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:52:45",
  "trx_id": "382cdcf1a2ff24df0783466d10c91a54cd1e6f57",
  "trx_in_block": 35,
  "virtual_op": false
}
seapyeffective vote applied for @sigmoid / event-for-outside-watchers
2019/05/29 08:48:15
authorsigmoid
pending payout0.005 HBD
permlinkevent-for-outside-watchers
rshares5133457223
total vote weight101541
voterseapy
weight28742
Transaction InfoBlock #33327418/Trx 58e8da6936d8c285027246506bb65aefa28b87ab
View Raw JSON Data
{
  "block": 33327418,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.005 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 5133457223,
      "total_vote_weight": 101541,
      "voter": "seapy",
      "weight": 28742
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T08:48:15",
  "trx_id": "58e8da6936d8c285027246506bb65aefa28b87ab",
  "trx_in_block": 25,
  "virtual_op": true
}
2019/05/29 08:48:15
authorsigmoid
permlinkevent-for-outside-watchers
voterseapy
weight6000 (60.00%)
Transaction InfoBlock #33327418/Trx 58e8da6936d8c285027246506bb65aefa28b87ab
View Raw JSON Data
{
  "block": 33327418,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "seapy",
      "weight": 6000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:48:15",
  "trx_id": "58e8da6936d8c285027246506bb65aefa28b87ab",
  "trx_in_block": 25,
  "virtual_op": false
}
igbotiereffective vote applied for @sigmoid / event-for-outside-watchers
2019/05/29 08:43:12
authorsigmoid
pending payout0.002 HBD
permlinkevent-for-outside-watchers
rshares931572332
total vote weight65613
voterigbotier
weight3269 (32.69%)
Transaction InfoBlock #33327317/Trx 24936ebefe5eab4cb918c69789085c290197587f
View Raw JSON Data
{
  "block": 33327317,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.002 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 931572332,
      "total_vote_weight": 65613,
      "voter": "igbotier",
      "weight": 3269
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T08:43:12",
  "trx_id": "24936ebefe5eab4cb918c69789085c290197587f",
  "trx_in_block": 23,
  "virtual_op": true
}
2019/05/29 08:43:12
authorsigmoid
permlinkevent-for-outside-watchers
voterigbotier
weight6000 (60.00%)
Transaction InfoBlock #33327317/Trx 24936ebefe5eab4cb918c69789085c290197587f
View Raw JSON Data
{
  "block": 33327317,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "igbotier",
      "weight": 6000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:43:12",
  "trx_id": "24936ebefe5eab4cb918c69789085c290197587f",
  "trx_in_block": 23,
  "virtual_op": false
}
2019/05/29 08:43:12
authorsigmoid
pending payout0.002 HBD
permlinkevent-for-outside-watchers
rshares48157825
total vote weight58506
voterlaissez-faire
weight169 (1.69%)
Transaction InfoBlock #33327317/Trx f1d099b0a54d512100c115326e6fd1632ebcaf83
View Raw JSON Data
{
  "block": 33327317,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.002 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 48157825,
      "total_vote_weight": 58506,
      "voter": "laissez-faire",
      "weight": 169
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T08:43:12",
  "trx_id": "f1d099b0a54d512100c115326e6fd1632ebcaf83",
  "trx_in_block": 21,
  "virtual_op": true
}
2019/05/29 08:43:12
authorsigmoid
permlinkevent-for-outside-watchers
voterlaissez-faire
weight10000 (100.00%)
Transaction InfoBlock #33327317/Trx f1d099b0a54d512100c115326e6fd1632ebcaf83
View Raw JSON Data
{
  "block": 33327317,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "laissez-faire",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:43:12",
  "trx_id": "f1d099b0a54d512100c115326e6fd1632ebcaf83",
  "trx_in_block": 21,
  "virtual_op": false
}
2019/05/29 08:43:12
authorsigmoid
pending payout0.002 HBD
permlinkevent-for-outside-watchers
rshares85584868
total vote weight58138
voteryougotresteemed
weight300 (3.00%)
Transaction InfoBlock #33327317/Trx 165a40c4f4d0a32bc89ceba0f4fe3529cafe74d6
View Raw JSON Data
{
  "block": 33327317,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.002 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 85584868,
      "total_vote_weight": 58138,
      "voter": "yougotresteemed",
      "weight": 300
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T08:43:12",
  "trx_id": "165a40c4f4d0a32bc89ceba0f4fe3529cafe74d6",
  "trx_in_block": 19,
  "virtual_op": true
}
2019/05/29 08:43:12
authorsigmoid
permlinkevent-for-outside-watchers
voteryougotresteemed
weight2500 (25.00%)
Transaction InfoBlock #33327317/Trx 165a40c4f4d0a32bc89ceba0f4fe3529cafe74d6
View Raw JSON Data
{
  "block": 33327317,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "yougotresteemed",
      "weight": 2500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:43:12",
  "trx_id": "165a40c4f4d0a32bc89ceba0f4fe3529cafe74d6",
  "trx_in_block": 19,
  "virtual_op": false
}
2019/05/29 08:43:03
authorsigmoid
pending payout0.001 HBD
permlinkevent-for-outside-watchers
rshares2066408066
total vote weight57485
voterimisstheoldkanye
weight10515
Transaction InfoBlock #33327315/Trx 04c07d6416af8558c2bac55cf0974481108028ed
View Raw JSON Data
{
  "block": 33327315,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.001 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 2066408066,
      "total_vote_weight": 57485,
      "voter": "imisstheoldkanye",
      "weight": 10515
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T08:43:03",
  "trx_id": "04c07d6416af8558c2bac55cf0974481108028ed",
  "trx_in_block": 23,
  "virtual_op": true
}
2019/05/29 08:43:03
authorsigmoid
permlinkevent-for-outside-watchers
voterimisstheoldkanye
weight100 (1.00%)
Transaction InfoBlock #33327315/Trx 04c07d6416af8558c2bac55cf0974481108028ed
View Raw JSON Data
{
  "block": 33327315,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "imisstheoldkanye",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:43:03",
  "trx_id": "04c07d6416af8558c2bac55cf0974481108028ed",
  "trx_in_block": 23,
  "virtual_op": false
}
cheneatseffective vote applied for @sigmoid / event-for-outside-watchers
2019/05/29 08:43:00
authorsigmoid
pending payout0.000 HBD
permlinkevent-for-outside-watchers
rshares1173382953
total vote weight34288
votercheneats
weight15429
Transaction InfoBlock #33327314/Trx 7bc1c12876e98a9dff74ba4b645e05e6162a6338
View Raw JSON Data
{
  "block": 33327314,
  "op": [
    "effective_comment_vote",
    {
      "author": "sigmoid",
      "pending_payout": "0.000 HBD",
      "permlink": "event-for-outside-watchers",
      "rshares": 1173382953,
      "total_vote_weight": 34288,
      "voter": "cheneats",
      "weight": 15429
    }
  ],
  "op_in_trx": 1,
  "timestamp": "2019-05-29T08:43:00",
  "trx_id": "7bc1c12876e98a9dff74ba4b645e05e6162a6338",
  "trx_in_block": 9,
  "virtual_op": true
}
2019/05/29 08:43:00
authorsigmoid
permlinkevent-for-outside-watchers
votercheneats
weight2500 (25.00%)
Transaction InfoBlock #33327314/Trx 7bc1c12876e98a9dff74ba4b645e05e6162a6338
View Raw JSON Data
{
  "block": 33327314,
  "op": [
    "vote",
    {
      "author": "sigmoid",
      "permlink": "event-for-outside-watchers",
      "voter": "cheneats",
      "weight": 2500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:43:00",
  "trx_id": "7bc1c12876e98a9dff74ba4b645e05e6162a6338",
  "trx_in_block": 9,
  "virtual_op": false
}
sigmoidpublished a new post: event-for-outside-watchers
2019/05/29 08:36:15
authorsigmoid
bodyEvent: for outside watchers === 이더리움은 비동기식 월드 컴퓨터다. 즉, 내가 요청한 작업이 언제 실행될지 확신하기가 힘들다. 이러한 환경에서 Dapp을 만들 때 가장 큰 패널티는 요청의 결과에 따라 다른 로직을 실행해야 할 때일 것이다.이런 경우 우리가 취할 수 있는 단순한 방법은 내작업이 실행될 때까지, 반복적으로 체인을 읽어 확인해 보는 것일 것이다. 당연히 이 방식은 납득하기 어렵다. 그래서 오늘은 이더리움이 이 문제를 어떻게 극복해 나가고 있는지, "Design-Rationale"(https://github.com/ethereum/wiki/wiki/Design-Rationale)문서를 시작으로 정리해 보는 시간을 가지기로 했다. ### 외부 관찰자에게 흥미있는 이벤트 이더리움 설계 근거에는 다음과 같은 내용이 나온다 >Ethereum 설계시 프로토콜의 기능과 opcode들을 최대한 저수준으로 구현함으로써, 나중에 나올수 있는 더 좋은 응용 방식에 잘 대응 할 수 있도록 하고, (해당 방식에서)필요없는 부분을 쉽게 제거 할 수 있도록 하여 좀더 효율적인 동작을 지원하도록 한다. > 그 예로 LOG opcode가 있다. "메시지"는 실제로 "함수 호출"과 "외부 관찰자에게 흥미있는 이벤트"를 비롯한 여러 개념이 통합되어 있으며, 이 두 가지는 분리할 만한 가치가 있다.(의역) 이더리움은 외부 관찰자가 관심있어하는 정보를 얻는 과정에서 겪을 어려움을 줄여주기 위해 Log Opcode를 제공한다. ### 솔리디티의 이벤트 정의 솔리디티 문서에서는 아래와 같이 이벤트를 정의한다. > 1. Solidity 이벤트는 EVM의 로깅 기능 위에 추상화를 제공합니다. 응용 프로그램은 Ethereum 클라이언트의 RPC 인터페이스를 통해 이러한 이벤트를 구독하고 청취 할 수 있습니다. > 2. 이벤트가 호출되면 인수(변수)가 트랜잭션 로그에 저장됩니다. 이 로그는 계약서 주소와 연결되어 블록 체인에 통합되며 블록이 액세스 가능한 한 계속 유지됩니다 > 3. 로그 데이터의 일부는 블룸 필터에 저장되기 때문에 효율적이고 암호학적으로 안전한 방법으로 이 데이터를 검색 할 수 있습니다. > 4. 최대 세 개의 매개 변수에 색인 된 속성을 추가하여 로그의 데이터 부분 대신 "Topic"이라는 특수 데이터 구조에 추가 할 수 있습니다. 솔리디티 개발자는 함수의 실행결과를 확인하기 위해, 이벤트를 사용하고, 구독함으로서 요청한 연산의 완료여부나, 결과등을 편한방식으로 확인 할 수 있게 된다. ## Log op code와 솔리디티의 Event의 관계 지금부터는 log opcode와 솔리디티의 Event에 대해 조금 더 자세히 분석하고 둘의 상관 관계를 이해해 보도록 하겠다. ### LOG op코드는 언제 생성되는가? ``` contract A { event E(...); function foo() public { emit E(...); } } ``` 위 코드는 솔리디티에서 이벤트를 사용하는 패턴이다. 이러한 패턴의 코드는 솔리디티 컴파일러에서 다음과 같이 해석된다. ![](https://i.imgur.com/La1ofCW.png) 함수 호출 과정에서 솔리디티 컴파일러가 Contract 키워드를 인식하여 내용을 파싱하고, Event token과 block내의 Emit token을 인식한 후, 해당 블록에서 emit이 발생할 경우 LOG opcode를 삽입하는 과정을 확인할 수 있다. > 대부분의 컴파일러와 같이 솔리디티 컴파일러도 parsing -> ast -> code generation순서이므로, 시간이 날때 한번쯤 봐두는것도 좋을것 같다. ### EVM상에서의 LOG op코드의 실행 컴파일러에서 삽입한 LOG op코드는 evm에서 다음과 같이 처리된다. ![](https://i.imgur.com/xCCX8s5.png) Contract의 foo 함수를 호출하는 트렌젝션이 블록에 포함되면, 노드들은 해당 트렌젝션을 처리하기 위해 EVM을 생성한다. EVM상에서는 계약의 코드를 준비한 후, 인터프리터를 통해 실행시킨다. 이때 Program Counter가 증가하면서 해석된 opcode를 jump table에서 호출하게 되며, Log op코드의 경우 jump table에 등록된 makeLog함수가 호출된다. makeLog함수 내부를 살펴보면(보라색) **스택상의 데이터로 토픽필드를 채우고, 데이터필드는 메모리 시작지점부터 크기만큼 읽는다.** 이 결과들을 포함하는 LOG데이터가 stateDB에 저장된다. ### 토픽과 데이터 스택에서 읽은 토픽과, 메모리에서 읽은 데이터의 내용은 어떤것일까? 작성한 컨트렉트를 컴파일 해보았다. ![](https://i.imgur.com/IeBXAUp.png) ``` solc --opcodes event.sol > opcodes.txt ======= event.sol:B ======= Opcodes: ... PUSH32 0x2D4DD5FE18ADA5A020A9F5591539A8DC3010A5C074BA6A70E1C956659F02786A PUSH1 0x1 PUSH1 0x40 MLOAD ... LOG1 ... ``` LOG1 op코드의 동작 시점을 기점으로 스택에는 이벤트의 원형에 대한 해시값이 들어있고, 뒤에 있는 2개의 스택 op와 mload로 인해 evm메모리의 0x40번지에 1이라는 값이 들어있게 된다. **결론적으로 topic 필드에는 이벤트의 원형이 들어갈 것이고, data 필드에는 메모리에서 1값을 채우게 된다.** 실제 저장이 잘 되는지 리믹스를 통해 확인해보았다. ![](https://i.imgur.com/DQ7t2xn.png) <input 0xc2985578 (함수명에 대한 해시값의 상위4바이트)> ![](https://i.imgur.com/9mtK5dh.png) <topic: 0x2d4dd5fe18ada5a020a9f5591539a8dc3010a5c074ba6a70e1c956659f02786a 이벤트의 원형에 대한 해시값> ![](https://i.imgur.com/3Y7XcdX.png) [{"address":"0x8c1ed7e19abaa9f23c476da86dc1577f1ef401f5",**"data":"0x0000000000000000000000000000000000000000000000000000000000000001","topics":["0x2d4dd5fe18ada5a020a9f5591539a8dc3010a5c074ba6a70e1c956659f02786a"]**,"rawVMResponse":[{"type":"Buffer","data":[140,30,215,225,154,186,169,242,60,71,109,168,109,193,87,127,30,244,1,245]},[{"type":"Buffer","data":[45,77,213,254,24,173,165,160,32,169,245,89,21,57,168,220,48,16,165,192,116,186,106,112,225,201,86,101,159,2,120,106]}],{"type":"Buffer","data":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]}]}] >Yay! 이제 우리는 opcode가 실행되었을때 체인상에 어떤 데이터가 어떤 형태로 저장되는지 확인하였다. ### Event 구독(RPC) https://web3py.readthedocs.io/en/stable/contracts.html#event-log-object 의 예제를 시작으로 dapp과 solidity event와 rpc의 연계관계를 알아본다. ``` >>> transfer_filter = my_token_contract.eventFilter('Transfer', {'filter': {'_from': '0xdc3a9db694bcdd55ebae4a89b22ac6d12b3f0c24'}}) >>> transfer_filter.get_new_entries() ``` 위 예제는 어떤 계약의 Transfer이벤트를 감지하는 필터를 생성하고, 필터를 통해 이벤트의 발생여부를 확인하는 dapp 예제이다. 먼저 web3의 역할을 보자 ![](https://i.imgur.com/pLsTpaK.png) web3를 통해 "eth_newFilter"라는 json request를 만들어 https provider의 세션으로 post한 후, response를 받아 처리하는 것을 확인할 수 있다.(blocking동작이다) 이러한 https요청은 geth구현체의 rpc서버로 전달되어 처리된다. rpc서버는 JSON request를 decoding할때 서비스와 함수이름을 "_"로 분리한다. 즉 그림에서는 eth서비스의 NewFilter함수가 호출되게 되며. 이함수 내부에서는 이더리움의 이벤트 시스템에서 발생하는 Log이벤트에 대해 subscription을 신청한다. ![](https://i.imgur.com/3z94FXX.png) ### 구독feed의 갱신(Log Opcode) 노드쪽의 Log이벤트는 새로운 block이 체인에 추가될때 InsertChain함수내에서 발생한다. 새롭게 수신한 블록의 처리가 모두 끝나면, 트렌젝션 처리중 Log opcode에 의해 생성된 로그를 모두 모아 EventSystem에 전달하고, 이 이벤트 시스템은 구독을 신청한 모든 요청자에게 해당 log를 broadcasting한다. 아까 우리의 rpc서버도 구독을 했기 때문에, 수신자에 포함될 것이며, 수신한 로그를 이용하여 필터를 업데이트 한다. 이후, get_new_entires가 dapp에서 호출되면 filter의 변경 여부를 판단하여 변경사항을 반환하게 된다. >eth_getFilterChanges가 node에 전달되면 eth/GetFilterChanges 함수가 호출될 것이다. ### 간단한 이벤트를 발생시키기 위해 정말 많은 일들이 벌어진다. 아래 그림이 오늘의 결론이다. Dapp은 이벤트를 통해 호출한 contract 함수의 feedback을 받을수 있으며, 이 feedback은 log opcode가 실행되어 로그가 생성되면, 이벤트 시스템과 rpc를 거쳐 dapp에게 전달된다. ![](https://i.imgur.com/ES8FXuU.png) ## 마치며, 조금 다양한 스택을 모두 거쳐야 하다보니 깊이는 조금 부족한것 같지만 컨트렉트에 정의된 이벤트가 다시 dapp에게 돌아오기 까지 과정의 분석을 통해 이더리움의 외부 이벤트 시스템을 조금이나마 더 이해할수 있었다. > 첨삭/수정은 언제든 감사히 받겠습니다. > [email protected]로 연락부탁드립니다.
json metadata{"tags":["ethereum","event","sct","kr"],"image":["https://i.imgur.com/La1ofCW.png","https://i.imgur.com/xCCX8s5.png","https://i.imgur.com/IeBXAUp.png","https://i.imgur.com/DQ7t2xn.png","https://i.imgur.com/9mtK5dh.png","https://i.imgur.com/3Y7XcdX.png","https://i.imgur.com/pLsTpaK.png","https://i.imgur.com/3z94FXX.png","https://i.imgur.com/ES8FXuU.png"],"links":["https://github.com/ethereum/wiki/wiki/Design-Rationale","https://web3py.readthedocs.io/en/stable/contracts.html#event-log-object"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkethereum
permlinkevent-for-outside-watchers
titleEvent: for outside watchers
Transaction InfoBlock #33327179/Trx bb438ebff63959be48fb70dbd83f0dac03550157
View Raw JSON Data
{
  "block": 33327179,
  "op": [
    "comment",
    {
      "author": "sigmoid",
      "body": "Event: for outside watchers\n===\n\n이더리움은 비동기식 월드 컴퓨터다. 즉, 내가 요청한 작업이 언제 실행될지 확신하기가 힘들다. 이러한 환경에서 Dapp을 만들 때 가장 큰 패널티는 요청의 결과에 따라 다른 로직을 실행해야 할 때일 것이다.이런 경우 우리가 취할 수 있는 단순한 방법은 내작업이 실행될 때까지, 반복적으로 체인을 읽어 확인해 보는 것일 것이다.\n\n당연히 이 방식은 납득하기 어렵다. 그래서 오늘은 이더리움이 이 문제를 어떻게 극복해 나가고 있는지, \"Design-Rationale\"(https://github.com/ethereum/wiki/wiki/Design-Rationale)문서를 시작으로 정리해 보는 시간을 가지기로 했다.\n\n\n### 외부 관찰자에게 흥미있는 이벤트 \n이더리움 설계 근거에는 다음과 같은 내용이 나온다\n>Ethereum 설계시 프로토콜의 기능과 opcode들을 최대한 저수준으로 구현함으로써, 나중에 나올수 있는 더 좋은 응용 방식에 잘 대응 할 수 있도록 하고, (해당 방식에서)필요없는 부분을 쉽게 제거 할 수 있도록 하여 좀더 효율적인 동작을 지원하도록 한다.\n> 그 예로 LOG opcode가 있다. \"메시지\"는 실제로 \"함수 호출\"과 \"외부 관찰자에게 흥미있는 이벤트\"를 비롯한 여러 개념이 통합되어 있으며, 이 두 가지는 분리할 만한 가치가 있다.(의역)\n\n이더리움은 외부 관찰자가 관심있어하는 정보를 얻는 과정에서 겪을 어려움을 줄여주기 위해 Log Opcode를 제공한다.\n\n### 솔리디티의 이벤트 정의\n솔리디티 문서에서는 아래와 같이 이벤트를 정의한다. \n> 1. Solidity 이벤트는 EVM의 로깅 기능 위에 추상화를 제공합니다. 응용 프로그램은 Ethereum 클라이언트의 RPC 인터페이스를 통해 이러한 이벤트를 구독하고 청취 할 수 있습니다.\n> 2. 이벤트가 호출되면 인수(변수)가 트랜잭션 로그에 저장됩니다. 이 로그는 계약서 주소와 연결되어 블록 체인에 통합되며 블록이 액세스 가능한 한 계속 유지됩니다\n> 3. 로그 데이터의 일부는 블룸 필터에 저장되기 때문에 효율적이고 암호학적으로 안전한 방법으로 이 데이터를 검색 할 수 있습니다.\n> 4. 최대 세 개의 매개 변수에 색인 된 속성을 추가하여 로그의 데이터 부분 대신 \"Topic\"이라는 특수 데이터 구조에 추가 할 수 있습니다. \n\n솔리디티 개발자는 함수의 실행결과를 확인하기 위해, 이벤트를 사용하고, 구독함으로서 요청한 연산의 완료여부나, 결과등을 편한방식으로 확인 할 수 있게 된다. \n\n\n## Log op code와 솔리디티의 Event의 관계\n지금부터는 log opcode와 솔리디티의 Event에 대해 조금 더 자세히 분석하고\n둘의 상관 관계를 이해해 보도록 하겠다.\n\n### LOG op코드는 언제 생성되는가?\n```\n        contract A {\n            event E(...);\n            function foo() public {\n                emit E(...);\n            }\n        }\n```\n위 코드는 솔리디티에서 이벤트를 사용하는 패턴이다. 이러한 패턴의 코드는 솔리디티 컴파일러에서 다음과 같이 해석된다.\n\n![](https://i.imgur.com/La1ofCW.png)\n\n함수 호출 과정에서 솔리디티 컴파일러가 Contract 키워드를 인식하여 내용을 파싱하고, Event token과 block내의 Emit token을 인식한 후, 해당 블록에서 emit이 발생할 경우 LOG opcode를 삽입하는 과정을 확인할 수 있다. \n\n> 대부분의 컴파일러와 같이 솔리디티 컴파일러도 parsing -> ast -> code generation순서이므로, 시간이 날때 한번쯤 봐두는것도 좋을것 같다.\n\n\n### EVM상에서의 LOG op코드의 실행\n컴파일러에서 삽입한 LOG op코드는 evm에서 다음과 같이 처리된다.\n\n![](https://i.imgur.com/xCCX8s5.png)\n\nContract의 foo 함수를 호출하는 트렌젝션이 블록에 포함되면, 노드들은 해당 트렌젝션을 처리하기 위해 EVM을 생성한다. EVM상에서는 계약의 코드를 준비한 후, 인터프리터를 통해 실행시킨다. 이때 Program Counter가 증가하면서 해석된 opcode를 jump table에서 호출하게 되며, Log op코드의 경우 jump table에 등록된 makeLog함수가 호출된다. \n\nmakeLog함수 내부를 살펴보면(보라색) **스택상의 데이터로 토픽필드를 채우고, 데이터필드는 메모리 시작지점부터 크기만큼 읽는다.** 이 결과들을 포함하는 LOG데이터가 stateDB에 저장된다. \n\n### 토픽과 데이터 \n스택에서 읽은 토픽과, 메모리에서 읽은 데이터의 내용은 어떤것일까? 작성한 컨트렉트를 컴파일 해보았다.\n![](https://i.imgur.com/IeBXAUp.png)\n\n```\nsolc --opcodes event.sol > opcodes.txt\n\n======= event.sol:B =======\nOpcodes:\n...\nPUSH32 0x2D4DD5FE18ADA5A020A9F5591539A8DC3010A5C074BA6A70E1C956659F02786A \nPUSH1 0x1 \nPUSH1 0x40 \nMLOAD\n...\nLOG1 \n...\n```\nLOG1 op코드의 동작 시점을 기점으로 스택에는 이벤트의 원형에 대한 해시값이 들어있고, 뒤에 있는 2개의 스택 op와 mload로 인해 evm메모리의 0x40번지에 1이라는 값이 들어있게 된다. **결론적으로 topic 필드에는 이벤트의 원형이 들어갈 것이고, data 필드에는 메모리에서 1값을 채우게 된다.** 실제 저장이 잘 되는지 리믹스를 통해 확인해보았다.\n\n![](https://i.imgur.com/DQ7t2xn.png)\n<input 0xc2985578 (함수명에 대한 해시값의 상위4바이트)>\n![](https://i.imgur.com/9mtK5dh.png)\n<topic: 0x2d4dd5fe18ada5a020a9f5591539a8dc3010a5c074ba6a70e1c956659f02786a 이벤트의 원형에 대한 해시값>\n![](https://i.imgur.com/3Y7XcdX.png)\n\n[{\"address\":\"0x8c1ed7e19abaa9f23c476da86dc1577f1ef401f5\",**\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"topics\":[\"0x2d4dd5fe18ada5a020a9f5591539a8dc3010a5c074ba6a70e1c956659f02786a\"]**,\"rawVMResponse\":[{\"type\":\"Buffer\",\"data\":[140,30,215,225,154,186,169,242,60,71,109,168,109,193,87,127,30,244,1,245]},[{\"type\":\"Buffer\",\"data\":[45,77,213,254,24,173,165,160,32,169,245,89,21,57,168,220,48,16,165,192,116,186,106,112,225,201,86,101,159,2,120,106]}],{\"type\":\"Buffer\",\"data\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]}]}]\n>Yay!\n\n이제 우리는 opcode가 실행되었을때 체인상에 어떤 데이터가 어떤 형태로 저장되는지 확인하였다.\n\n### Event 구독(RPC)\nhttps://web3py.readthedocs.io/en/stable/contracts.html#event-log-object 의 예제를 시작으로 dapp과 solidity event와 rpc의 연계관계를 알아본다.\n```\n>>> transfer_filter = my_token_contract.eventFilter('Transfer', {'filter': {'_from': '0xdc3a9db694bcdd55ebae4a89b22ac6d12b3f0c24'}})\n>>> transfer_filter.get_new_entries()\n```\n위 예제는 어떤 계약의 Transfer이벤트를 감지하는 필터를 생성하고, 필터를 통해 이벤트의 발생여부를 확인하는 dapp 예제이다. 먼저 web3의 역할을 보자\n![](https://i.imgur.com/pLsTpaK.png)\n\nweb3를 통해 \"eth_newFilter\"라는 json request를 만들어 https provider의 세션으로 post한 후, response를 받아 처리하는 것을 확인할 수 있다.(blocking동작이다)  이러한 https요청은 geth구현체의 rpc서버로 전달되어 처리된다.\n\nrpc서버는 JSON request를 decoding할때 서비스와 함수이름을 \"_\"로 분리한다.\n즉 그림에서는 eth서비스의 NewFilter함수가 호출되게 되며. 이함수 내부에서는 이더리움의 이벤트 시스템에서 발생하는 Log이벤트에 대해 subscription을 신청한다.\n![](https://i.imgur.com/3z94FXX.png)\n\n\n### 구독feed의 갱신(Log Opcode)\n노드쪽의 Log이벤트는 새로운 block이 체인에 추가될때 InsertChain함수내에서 발생한다.\n새롭게 수신한 블록의 처리가 모두 끝나면, 트렌젝션 처리중 Log opcode에 의해 생성된 로그를 모두 모아 EventSystem에 전달하고, 이 이벤트 시스템은 구독을 신청한 모든 요청자에게 해당 log를 broadcasting한다.\n\n아까 우리의 rpc서버도 구독을 했기 때문에, 수신자에 포함될 것이며, 수신한 로그를 이용하여 필터를 업데이트 한다. 이후, get_new_entires가 dapp에서 호출되면 filter의 변경 여부를 판단하여 변경사항을 반환하게 된다.\n>eth_getFilterChanges가 node에 전달되면 eth/GetFilterChanges 함수가 호출될 것이다.\n\n### 간단한 이벤트를 발생시키기 위해 정말 많은 일들이 벌어진다.\n아래 그림이 오늘의 결론이다. Dapp은 이벤트를 통해 호출한 contract 함수의 feedback을 받을수 있으며, 이 feedback은 log opcode가 실행되어 로그가 생성되면, 이벤트 시스템과 rpc를 거쳐 dapp에게 전달된다. \n\n![](https://i.imgur.com/ES8FXuU.png)\n\n\n## 마치며,\n조금 다양한 스택을 모두 거쳐야 하다보니 깊이는 조금 부족한것 같지만\n컨트렉트에 정의된 이벤트가 다시 dapp에게 돌아오기 까지 과정의 분석을 통해\n이더리움의 외부 이벤트 시스템을 조금이나마 더 이해할수 있었다.\n\n\n> 첨삭/수정은 언제든 감사히 받겠습니다.\n> [email protected]로 연락부탁드립니다.",
      "json_metadata": "{\"tags\":[\"ethereum\",\"event\",\"sct\",\"kr\"],\"image\":[\"https://i.imgur.com/La1ofCW.png\",\"https://i.imgur.com/xCCX8s5.png\",\"https://i.imgur.com/IeBXAUp.png\",\"https://i.imgur.com/DQ7t2xn.png\",\"https://i.imgur.com/9mtK5dh.png\",\"https://i.imgur.com/3Y7XcdX.png\",\"https://i.imgur.com/pLsTpaK.png\",\"https://i.imgur.com/3z94FXX.png\",\"https://i.imgur.com/ES8FXuU.png\"],\"links\":[\"https://github.com/ethereum/wiki/wiki/Design-Rationale\",\"https://web3py.readthedocs.io/en/stable/contracts.html#event-log-object\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "ethereum",
      "permlink": "event-for-outside-watchers",
      "title": "Event: for outside watchers"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-29T08:36:15",
  "trx_id": "bb438ebff63959be48fb70dbd83f0dac03550157",
  "trx_in_block": 23,
  "virtual_op": false
}
2019/05/28 12:39:12
authorsigmoid
permlinkall-about-ethereum-gas
Transaction InfoBlock #33303263/Virtual Operation 4294967295:2
View Raw JSON Data
{
  "block": 33303263,
  "op": [
    "comment_payout_update",
    {
      "author": "sigmoid",
      "permlink": "all-about-ethereum-gas"
    }
  ],
  "op_in_trx": 2,
  "timestamp": "2019-05-28T12:39:12",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/27 16:52:27
authorsigmoid
permlinkethreumdb-in-a-nutshell
Transaction InfoBlock #33279549/Virtual Operation 4294967295:10
View Raw JSON Data
{
  "block": 33279549,
  "op": [
    "comment_payout_update",
    {
      "author": "sigmoid",
      "permlink": "ethreumdb-in-a-nutshell"
    }
  ],
  "op_in_trx": 10,
  "timestamp": "2019-05-27T16:52:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 2.053 HBD reward share for ethreumdb-in-a-nutshell
2019/05/27 16:52:27
authorsigmoid
author rewards3938
beneficiary payout value0.000 HBD
curator payout value0.509 HBD
payout2.053 HBD
permlinkethreumdb-in-a-nutshell
total payout value1.542 HBD
Transaction InfoBlock #33279549/Virtual Operation 4294967295:9
View Raw JSON Data
{
  "block": 33279549,
  "op": [
    "comment_reward",
    {
      "author": "sigmoid",
      "author_rewards": 3938,
      "beneficiary_payout_value": "0.000 HBD",
      "curator_payout_value": "0.509 HBD",
      "payout": "2.053 HBD",
      "permlink": "ethreumdb-in-a-nutshell",
      "total_payout_value": "1.542 HBD"
    }
  ],
  "op_in_trx": 9,
  "timestamp": "2019-05-27T16:52:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
sigmoidreceived 0.771 HBD, 2.418 HP author reward for @sigmoid / ethreumdb-in-a-nutshell
2019/05/27 16:52:27
authorsigmoid
curators vesting payout2591.165511 VESTS
hbd payout0.771 HBD
hive payout0.000 HIVE
payout must be claimedtrue
permlinkethreumdb-in-a-nutshell
vesting payout3924.619148 VESTS
Transaction InfoBlock #33279549/Virtual Operation 4294967295:8
View Raw JSON Data
{
  "block": 33279549,
  "op": [
    "author_reward",
    {
      "author": "sigmoid",
      "curators_vesting_payout": "2591.165511 VESTS",
      "hbd_payout": "0.771 HBD",
      "hive_payout": "0.000 HIVE",
      "payout_must_be_claimed": true,
      "permlink": "ethreumdb-in-a-nutshell",
      "vesting_payout": "3924.619148 VESTS"
    }
  ],
  "op_in_trx": 8,
  "timestamp": "2019-05-27T16:52:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": true
}
2019/05/25 05:22:36
authorsteemitboard
bodyCongratulations @sigmoid! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) : <table><tr><td><img src="https://steemitimages.com/60x70/http://steemitboard.com/@sigmoid/comments.png?201905250455"></td><td>You made more than 10 comments. Your next target is to reach 50 comments.</td></tr> </table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@sigmoid) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=sigmoid)_</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorsigmoid
parent permlinkall-about-ethereum-gas
permlinksteemitboard-notify-sigmoid-20190525t052235000z
title
Transaction InfoBlock #33208214/Trx a6b6f822f378c5275dd3bba212fc649868bbf82d
View Raw JSON Data
{
  "block": 33208214,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @sigmoid! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :\n\n<table><tr><td><img src=\"https://steemitimages.com/60x70/http://steemitboard.com/@sigmoid/comments.png?201905250455\"></td><td>You made more than 10 comments. Your next target is to reach 50 comments.</td></tr>\n</table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@sigmoid) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=sigmoid)_</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "sigmoid",
      "parent_permlink": "all-about-ethereum-gas",
      "permlink": "steemitboard-notify-sigmoid-20190525t052235000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-25T05:22:36",
  "trx_id": "a6b6f822f378c5275dd3bba212fc649868bbf82d",
  "trx_in_block": 21,
  "virtual_op": false
}
sigmoidpublished a new post: all-about-ethereum-gas
2019/05/25 03:26:06
authorsigmoid
bodyAll about Ethereum Gas === 요즘 주변 개발자들 사이에서 흔히 듣리는 소리는, "컨트렉트를 짰는데 제대로 동작하지 않아서 확인해 보니 Gas문제였다." 인 것 같다. 얼마전 facebook에는 EstimateGas만큼 Gas를 설정해서 트렌젝션을 보냈는데, negative gas가 발생하는 트렌젝션이여서 최종 사용량이 적게 계산된것이더라. 그래서 실제 실행시에는 gas limit을 넘어가는 순간이 발생하더라라는 흥미로운 이야기도 들었다. 사실 Gas의 사용량은, 계약의 코드가 소모하는 량 + OnChain state의 변화량이 함께 존재하는 개념이기 때문에, 정확하게 예측하기가 어렵다. 심지어 Web3에서 제공하는 함수이름도 EstimateGas 이지 않은가? 그래서 오늘은 이더리움의 Gas와 EVM 상의 처리 로직을 정리해보고 EsimateGas함수의 동작원리를 파악해보고자 이 글을 시작하였다. ## Gas가 뭐야? 이더리움의 내재가치는 당연히 Ether인데 왜 Gas라는 단어를 만들어 우리를 헷갈리게 할까? 이부분을 먼저 명확하게 이해하고 관리 로직을 들여다 보도록 하자. ### Ethereum에서 Gas의 역할 Ethreum Yellow paper기준으로 Gas는 이더리움 프로토콜상에서 다음의 역할을 부여받았다. 1. 이더리움의 가격 변동성에 대한 버퍼역할 2. 마이너에 대한 보상의 역할(Reward 말고 연산에 대한 Fee) 3. Dos등의 공격을 막는 역할 위의 역할중 1번이 이 글에서 가장 중요한 내용이다.(2번과 3번은 다루지 않는다) 먼저 위 개발자들이 말하는 가스비는 Gas Price와 Gas 사용량(Unit이라는 표현을 빌린다)의 조합이다. Gas Price는 Gas 1 unit당 이더리움 가격이다. Gas Unit은 Ethereum의 EVM operation에서 비용을 책정하는 고유의 단위이다. 그래서 opcode당 실제 비용은 Gast cost * unit/opcode가 된다. 이러한 비용구조는 Action을 생성하는 user가 unit당 Gas price를 조절함으로서 이더리움의 외부가격변동(원, 달러등)으로부터 자유로워 질수있는 기회를 준다. 만약 가스비로 천원을 내고 싶으면, 내 Action이 소모하게될 Gas unit의 수로 천원을 나누고, 유닛당 원화가격이 나오면, 해당 원화가격에 대응되는 Gas Price를 이더리움으로 입력하면 된다. 즉, 이더리움이 비싸지면 Gas price를 적게 적고, 이더리움이 싸지면 p높게 적어 내어서 최종 소비 금액을 천원에 맞출 수 있다 실제 트렌젝션을 생성하는 과정에서 우리는 Gas에 관련한 2개의 field인Gas Cost와 Gas Limit을 입력하게 되는데, Cost는 이더리움과 연결되고, Limit은 opcode가 소모하는 (최대)Unit수로 정의된다. 그래서 최종 지불하는 가스비는 Cost * Unit Limit으로 계산되는 것이다. ### 결국 Gas는 EVM상에서만 존재한다. 이더리움에서는 연산을 하는것도, State를 변경하는 것도 모두 EVM이다. 즉 가스를 소모하고 역할은 모두 EVM에서 한다. 나중에 나오겠지만, Refund할때는 이더리움으로 돌려줘야 하므로 남은 Gas 유닛수 * Gas Cost를 해서 변환된 가치를 돌려준다. ## Ethereum의 Gas 정책 ### 연산당 소모량 EVM은 op code를 실행하는 머신이며, 아래와 같이 op code를 실행할때 마다 Gas Unit을 소모하도록 설계가 되어있다. ![](https://i.imgur.com/LiiyW7x.png) (From: https://github.com/djrtwo/evm-opcode-gas-costs/blob/master/opcode-gas-costs_EIP-150_revision-1e18248_2017-04-12.csv) ### State 변화에 대한 비용과 Negative Gas 돈먹는 하마같으니라고, 메모리나 OnChain에 기록될 Storage를 읽고 쓰는데도 비용이 든다. M은 Memory, S는 Storage이다. 다들 그래서 최종 저장할때 말고는 Memory를 사용한다. ![](https://i.imgur.com/Vd9lYEM.png) Negative Gas가 재미있는 개념인데, 이더리움은 사용하지 않는 스토리지나 어카운트의 삭제를 장려하기 위해, Gas를 돌려주는 정책을 만들었다. 글의 시작부에 언급했던 Negative Gas 문제를 이해하는데 도움을 줄 것이다. * Deleting a contract (SELFDESTRUCT) is worth a refund of 24,000 gas. * Changing a storage address from a nonzero value to zero (SSTORE[x] = 0) is worth a refund of 15,000 gas. > 과연 어떤 문제가 발생하게 될까! ## Gas가 소비 되는 과정. ### Transaction Gas Limit vs. Block Gas Limit 이더리움 상에는 2개의 Gas Limit이 존재한다. 실제 Gas의 소비를 이해하기 위해 두 Gas Limit에 대해 간단히 짚고 넘어가야한다. 윗 챕터에서 트렌젝션을 생성하기 위해 입력하는 2개의 필드중 하나가 Gas Limit이라고 했는데, 이것의 정확한 명칭은 Transaction Gas Limit으로, 이 트렌젝션을 실행하는 과정에서 소모할 최대 unit수를 가리킨다. 이 유닛수를 넘어가면 실행할 opcode가 남아있더라도 EVM의 실행이 멈추게 될 것이다. 두번째 Block Gas Limit은 해당 블록내에서 트렌젝션들이 사용가능한 최대 Gas unit수이다. 즉, 앞선 트렌젝션에서 Block Gas Limit만큼의 unit을 사용했다면, 다른 트렌젝션은 실행 될 수 없다.(실제로 그런일은 발생하지 않는다. 트렌젝션이 블록에 포함되는 과정에서 이미 걸러지기 때문에) ### EVM의 Gas 사용방식 - Gas Pool Gas Pool은 블록의 state를 Processing할때 사용되는 개념이다. 어떤 블록을 처리할때(정확히는 블록내의 transaction을 처리) 사용가능한 가스를 관리하기 위한 pool로서, 블록 처리 시작전 생성되며 BlockGasLimit값으로 초기화된다 (중요!) 아래 함수 호출 구조를 보면, Gas Pool을 생성하고 블록 상의 트렌젝션을 실행하기 위해 매 트렌젝션마다 Gas Pool에서 Transaction Limit만큼 가스를 사고, 사둔 가스에서 opcode의 cost를 소모하는 것을 확인할 수있다. 이후 남은 가스나 환불 될 가스의 unit수는 Pool에 반환된다. ![](https://i.imgur.com/ZcUCMxP.png) 이러한 로직을 통해 트렌젝션이 실제 사용한 Gas unit량만을 고려하여 블록에 트렌젝션을 최대한 가득 채울 수 있게 된다. ### Estimate Gas의 동작방식 EstimateGas함수는 트렌젝션의 사용량을 예측하기 위해 사용하는 함수이다. 이 함수는 최소값을 21000유닛으로, 또 최대값을 현재 가장 최신의 블록(마이닝을 하고있을경우 마이닝되었지만 아직 canonical확정이 되지 않은 블록이 존재할수 있으므로, 최신 마이닝된 블록)의 Block Gas Limit으로 설정한 후 바이너리 서치를 통해 Contract호출시 transaction이 성공하는 경우의 Gas를 반환한다. ![](https://i.imgur.com/g7wkGIE.png) 실제로 Contract호출함수는 이렇게 생겼다 오류가 나지 않도록 임시 balance도 최대로 주고, 가스풀도 최대값으로 준다. ![](https://i.imgur.com/mkwhh6a.png) 이런 호출 방식이라면, Gas Pool을 설명했던 함수 호출 부분에서 이부분을 공통으로 사용하고 있음을 알수 있다. ![](https://i.imgur.com/AbrjTLr.png) 그렇다면 처리로직은 아래와 같이 요약 할 수 있다. 1. 바이너리 서치를 통해 입력한 가스 값만큼 가스풀에서 가스를 산다. 2. 트렌젝션을 실행해본다. 3. 실행결과를 확인한다. 1. halt가 나면 스테이트를 원상복원하고, 다른 입력을 넣는다. 2. 성공했다면 입력한 값을 리턴한다 (!) 이상하다. 실제 사용한 가스값을 리턴하는 거라면, negative gas를 고려하여 실제 peak상황보다 작은 값이 반환되겠지만, 코드 분석에 따르면 이미 산 가스를 가지고 실행이 되는지 안되는지를 검증해보고 해당 가스를 반환하기 때문에 문제가 되면 안된다! ## 다시 문제로 돌아가서. 그럼 언제 문제가 발생한 것일까? 예상되는 부분으로는 예측에 사용된 state가 실행 당시와 다를 경우다. 예측에 사용된 최신 블록의 다음 블록에 내 트렌잭션이 첫번째로 포함된다는 보장이 없기 때문에, 문제가 발생할수 있다. 또한 다음블록에 포함되더라도, 앞쪽의 트렌젝션이 내가 사용하는 state를 변경했을 경우에도, 문제가 발생가능하다. 마지막 Mining한 블록이 uncle블록으로 처리되었을 경우, 바로 다음 블록에 첫번째로 포함된다 하더라도 문제가 발생할수 있을것으로 예상한다. ## 마치며, 실제로 테스트를 해본것은 아니기 때문에, 100% 확신할 순 없지만 최소한 실제 사용된 gas를 리턴하는 것이 아니라, 입력한 GasLimit으로 트렌젝션이 동작하는지를 확인한 값을 리턴하는 로직으로 구현이 되어 있다는 것을 확인하였다. 다만, Estimate Gas로 예측한 가격은 마이닝 상태와, 블록에 포함되는 시간에 따라 언제든 무효해 질수 있다는 것을 확인하였기 때문에, 최초 언급된 제보는 분석이 틀렸을 확률이 높다는것만 확인하고, 글을 마무리 하기로 했다. > 잘못 분석된 내용이 있거나, 수정할 부분이 있다면 > [email protected]로 언제든 연락부탁드립니다.
json metadata{"tags":["ethereum","gas","sct","kr","factom"],"image":["https://i.imgur.com/LiiyW7x.png","https://i.imgur.com/Vd9lYEM.png","https://i.imgur.com/ZcUCMxP.png","https://i.imgur.com/g7wkGIE.png","https://i.imgur.com/mkwhh6a.png","https://i.imgur.com/AbrjTLr.png"],"links":["https://github.com/djrtwo/evm-opcode-gas-costs/blob/master/opcode-gas-costs_EIP-150_revision-1e18248_2017-04-12.csv"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkfactom
permlinkall-about-ethereum-gas
titleAll about Ethereum Gas
Transaction InfoBlock #33205885/Trx 2a97c157e1d1d2976833f6a747f2112f3261cffc
View Raw JSON Data
{
  "block": 33205885,
  "op": [
    "comment",
    {
      "author": "sigmoid",
      "body": "All about Ethereum Gas\n===\n요즘 주변 개발자들 사이에서 흔히 듣리는 소리는, \"컨트렉트를 짰는데 제대로 동작하지 않아서 확인해 보니 Gas문제였다.\" 인 것 같다. \n\n얼마전 facebook에는 EstimateGas만큼 Gas를 설정해서 트렌젝션을 보냈는데, negative gas가 발생하는 트렌젝션이여서 최종 사용량이 적게 계산된것이더라. 그래서 실제 실행시에는 gas limit을 넘어가는 순간이 발생하더라라는 흥미로운 이야기도 들었다.\n\n사실 Gas의 사용량은, 계약의 코드가 소모하는 량 + OnChain state의 변화량이 함께 존재하는 개념이기 때문에, 정확하게 예측하기가 어렵다. 심지어 Web3에서 제공하는 함수이름도 EstimateGas 이지 않은가?\n\n그래서 오늘은 이더리움의 Gas와 EVM 상의 처리 로직을 정리해보고\nEsimateGas함수의 동작원리를 파악해보고자 이 글을 시작하였다.\n\n## Gas가 뭐야?\n이더리움의 내재가치는 당연히 Ether인데 왜 Gas라는 단어를 만들어 우리를 헷갈리게 할까? 이부분을 먼저 명확하게 이해하고 관리 로직을 들여다 보도록 하자.\n\n### Ethereum에서 Gas의 역할\nEthreum Yellow paper기준으로 Gas는 이더리움 프로토콜상에서 다음의 역할을 부여받았다.\n1. 이더리움의 가격 변동성에 대한 버퍼역할\n2. 마이너에 대한 보상의 역할(Reward 말고 연산에 대한 Fee)\n3. Dos등의 공격을 막는 역할\n\n위의 역할중 1번이 이 글에서 가장 중요한 내용이다.(2번과 3번은 다루지 않는다)\n\n먼저 위 개발자들이 말하는 가스비는 Gas Price와 Gas 사용량(Unit이라는 표현을 빌린다)의 조합이다. Gas Price는 Gas 1 unit당 이더리움 가격이다. Gas Unit은 Ethereum의 EVM operation에서 비용을 책정하는 고유의 단위이다. 그래서 opcode당 실제 비용은 Gast cost * unit/opcode가 된다. 이러한 비용구조는 Action을 생성하는 user가 unit당 Gas price를 조절함으로서 이더리움의 외부가격변동(원, 달러등)으로부터 자유로워 질수있는 기회를 준다.\n\n만약 가스비로 천원을 내고 싶으면, 내 Action이 소모하게될 Gas unit의 수로 천원을 나누고, 유닛당 원화가격이 나오면, 해당 원화가격에 대응되는 Gas Price를 이더리움으로 입력하면 된다. 즉, 이더리움이 비싸지면 Gas price를 적게 적고, 이더리움이 싸지면 p높게 적어 내어서 최종 소비 금액을 천원에 맞출 수 있다 \n\n실제 트렌젝션을 생성하는 과정에서 우리는 Gas에 관련한 2개의 field인Gas Cost와 Gas Limit을 입력하게 되는데, Cost는 이더리움과 연결되고, Limit은 opcode가 소모하는 (최대)Unit수로 정의된다.\n그래서 최종 지불하는 가스비는 Cost * Unit Limit으로 계산되는 것이다.\n\n### 결국 Gas는 EVM상에서만 존재한다.\n이더리움에서는 연산을 하는것도, State를 변경하는 것도 모두 EVM이다.\n즉 가스를 소모하고 역할은 모두 EVM에서 한다.\n나중에 나오겠지만, Refund할때는 이더리움으로 돌려줘야 하므로 남은 Gas 유닛수 * Gas Cost를 해서 변환된 가치를 돌려준다.\n\n## Ethereum의 Gas 정책\n### 연산당 소모량\nEVM은 op code를 실행하는 머신이며, 아래와 같이 op code를 실행할때 마다 Gas Unit을 소모하도록 설계가 되어있다. \n![](https://i.imgur.com/LiiyW7x.png)\n(From: https://github.com/djrtwo/evm-opcode-gas-costs/blob/master/opcode-gas-costs_EIP-150_revision-1e18248_2017-04-12.csv)\n\n### State 변화에 대한 비용과 Negative Gas \n돈먹는 하마같으니라고, 메모리나 OnChain에 기록될 Storage를 읽고 쓰는데도 비용이 든다. M은 Memory, S는 Storage이다. 다들 그래서 최종 저장할때 말고는 Memory를 사용한다. \n![](https://i.imgur.com/Vd9lYEM.png)\n\nNegative Gas가 재미있는 개념인데, 이더리움은 사용하지 않는 스토리지나 어카운트의 삭제를 장려하기 위해, Gas를 돌려주는 정책을 만들었다. 글의 시작부에 언급했던 Negative Gas 문제를 이해하는데 도움을 줄 것이다.\n * Deleting a contract (SELFDESTRUCT) is worth a refund of 24,000 gas.\n * Changing a storage address from a nonzero value to zero (SSTORE[x] = 0) is worth a refund of 15,000 gas.\n> 과연 어떤 문제가 발생하게 될까!\n\n## Gas가 소비 되는 과정.\n### Transaction Gas Limit vs. Block Gas Limit\n이더리움 상에는 2개의 Gas Limit이 존재한다. \n실제 Gas의 소비를 이해하기 위해 두 Gas Limit에 대해 간단히 짚고 넘어가야한다. \n\n윗 챕터에서 트렌젝션을 생성하기 위해 입력하는 2개의 필드중 하나가 Gas Limit이라고 했는데, 이것의 정확한 명칭은 Transaction Gas Limit으로, 이 트렌젝션을 실행하는 과정에서 소모할 최대 unit수를 가리킨다. 이 유닛수를 넘어가면 실행할 opcode가 남아있더라도 EVM의 실행이 멈추게 될 것이다.\n\n두번째 Block Gas Limit은 해당 블록내에서 트렌젝션들이 사용가능한 최대 Gas unit수이다. 즉, 앞선 트렌젝션에서 Block Gas Limit만큼의 unit을 사용했다면, 다른 트렌젝션은 실행 될 수 없다.(실제로 그런일은 발생하지 않는다. 트렌젝션이 블록에 포함되는 과정에서 이미 걸러지기 때문에)\n\n### EVM의 Gas 사용방식 - Gas Pool\nGas Pool은 블록의 state를 Processing할때 사용되는 개념이다.\n어떤 블록을 처리할때(정확히는 블록내의 transaction을 처리) 사용가능한 가스를 관리하기 위한 pool로서, 블록 처리 시작전 생성되며 BlockGasLimit값으로 초기화된다 (중요!)\n\n아래 함수 호출 구조를 보면, Gas Pool을 생성하고 블록 상의 트렌젝션을 실행하기 위해 매 트렌젝션마다 Gas Pool에서 Transaction Limit만큼 가스를 사고, 사둔 가스에서 opcode의 cost를 소모하는 것을 확인할 수있다. 이후 남은 가스나 환불 될 가스의 unit수는 Pool에 반환된다.\n![](https://i.imgur.com/ZcUCMxP.png)\n\n이러한 로직을 통해 트렌젝션이 실제 사용한 Gas unit량만을 고려하여 블록에 트렌젝션을 최대한 가득 채울 수 있게 된다.\n\n### Estimate Gas의 동작방식\nEstimateGas함수는 트렌젝션의 사용량을 예측하기 위해 사용하는 함수이다. 이 함수는 최소값을 21000유닛으로, 또 최대값을 현재 가장 최신의 블록(마이닝을 하고있을경우 마이닝되었지만 아직 canonical확정이 되지 않은 블록이 존재할수 있으므로, 최신 마이닝된 블록)의 Block Gas Limit으로 설정한 후 바이너리 서치를 통해 Contract호출시 transaction이 성공하는 경우의 Gas를 반환한다. \n\n![](https://i.imgur.com/g7wkGIE.png)\n\n실제로 Contract호출함수는 이렇게 생겼다\n오류가 나지 않도록 임시 balance도 최대로 주고, 가스풀도 최대값으로 준다.\n![](https://i.imgur.com/mkwhh6a.png)\n\n이런 호출 방식이라면, Gas Pool을 설명했던 함수 호출 부분에서 이부분을 공통으로 사용하고 있음을 알수 있다.\n![](https://i.imgur.com/AbrjTLr.png)\n\n그렇다면 처리로직은 아래와 같이 요약 할 수 있다.\n1. 바이너리 서치를 통해 입력한 가스 값만큼 가스풀에서 가스를 산다.\n2. 트렌젝션을 실행해본다.\n3. 실행결과를 확인한다.\n    1. halt가 나면 스테이트를 원상복원하고, 다른 입력을 넣는다.\n    2. 성공했다면 입력한 값을 리턴한다 (!)\n\n이상하다. 실제 사용한 가스값을 리턴하는 거라면, negative gas를 고려하여 실제 peak상황보다 작은 값이 반환되겠지만, 코드 분석에 따르면 이미 산 가스를 가지고 실행이 되는지 안되는지를 검증해보고 해당 가스를 반환하기 때문에 문제가 되면 안된다!\n\n## 다시 문제로 돌아가서.\n그럼 언제 문제가 발생한 것일까?\n\n예상되는 부분으로는 예측에 사용된 state가 실행 당시와 다를 경우다.\n예측에 사용된 최신 블록의 다음 블록에 내 트렌잭션이 첫번째로 포함된다는 보장이 없기 때문에, 문제가 발생할수 있다. \n\n또한 다음블록에 포함되더라도, 앞쪽의 트렌젝션이 내가 사용하는 state를 변경했을 경우에도, 문제가 발생가능하다.\n\n마지막 Mining한 블록이 uncle블록으로 처리되었을 경우, 바로 다음 블록에 첫번째로 포함된다 하더라도 문제가 발생할수 있을것으로 예상한다.\n\n\n## 마치며,\n실제로 테스트를 해본것은 아니기 때문에, 100% 확신할 순 없지만\n최소한 실제 사용된 gas를 리턴하는 것이 아니라, 입력한 GasLimit으로 트렌젝션이 동작하는지를 확인한 값을 리턴하는 로직으로 구현이 되어 있다는 것을 확인하였다.\n\n다만, Estimate Gas로 예측한 가격은 마이닝 상태와, 블록에 포함되는 시간에 따라 언제든 무효해 질수 있다는 것을 확인하였기 때문에, 최초 언급된 제보는 분석이 틀렸을 확률이 높다는것만 확인하고, 글을 마무리 하기로 했다.\n\n> 잘못 분석된 내용이 있거나, 수정할 부분이 있다면 \n> [email protected]로 언제든 연락부탁드립니다.",
      "json_metadata": "{\"tags\":[\"ethereum\",\"gas\",\"sct\",\"kr\",\"factom\"],\"image\":[\"https://i.imgur.com/LiiyW7x.png\",\"https://i.imgur.com/Vd9lYEM.png\",\"https://i.imgur.com/ZcUCMxP.png\",\"https://i.imgur.com/g7wkGIE.png\",\"https://i.imgur.com/mkwhh6a.png\",\"https://i.imgur.com/AbrjTLr.png\"],\"links\":[\"https://github.com/djrtwo/evm-opcode-gas-costs/blob/master/opcode-gas-costs_EIP-150_revision-1e18248_2017-04-12.csv\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "factom",
      "permlink": "all-about-ethereum-gas",
      "title": "All about Ethereum Gas"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-25T03:26:06",
  "trx_id": "2a97c157e1d1d2976833f6a747f2112f3261cffc",
  "trx_in_block": 11,
  "virtual_op": false
}

Account Metadata

POSTING JSON METADATA
profile{"name":"SigmoiD","about":"Dsrv Labs.","website":"http://dsrvlabs.com","cover_image":"https://steemitimages.com/DQmNQEbBYYzgiLCCZKky4UfzY84kiwN21LwLop22PYtwNoC/20180309_203350.jpg","profile_image":"http://www.dsrvlabs.com/me.jpg"}
JSON METADATA
profile{"name":"SigmoiD","about":"Dsrv Labs.","website":"http://dsrvlabs.com","cover_image":"https://steemitimages.com/DQmNQEbBYYzgiLCCZKky4UfzY84kiwN21LwLop22PYtwNoC/20180309_203350.jpg","profile_image":"http://www.dsrvlabs.com/me.jpg"}
{
  "posting_json_metadata": {
    "profile": {
      "name": "SigmoiD",
      "about": "Dsrv Labs.",
      "website": "http://dsrvlabs.com",
      "cover_image": "https://steemitimages.com/DQmNQEbBYYzgiLCCZKky4UfzY84kiwN21LwLop22PYtwNoC/20180309_203350.jpg",
      "profile_image": "http://www.dsrvlabs.com/me.jpg"
    }
  },
  "json_metadata": {
    "profile": {
      "name": "SigmoiD",
      "about": "Dsrv Labs.",
      "website": "http://dsrvlabs.com",
      "cover_image": "https://steemitimages.com/DQmNQEbBYYzgiLCCZKky4UfzY84kiwN21LwLop22PYtwNoC/20180309_203350.jpg",
      "profile_image": "http://www.dsrvlabs.com/me.jpg"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM88SHsdJQQUFUn95yzJs1kGLBhtFXr7eGsJ1bYns12wyZ2GyHJB1/1
Active
Single Signature
Public Keys
STM4zgHjLrLi1w8MnLEgcgi76Sz5psjFNPp7mYvQbzGXgL7jeGHkb1/1
Posting
Single Signature
Public Keys
STM5itgF2CnNT1fs4xmXKKk3ahQ9znX9bucm4G37sEtTkaaH15YFm1/1
Memo
STM6oe4V9TPmAs8Pux2Eg9SpFhAXwRtTPeYziAYmNdjDb8VSgwBrz
{
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM88SHsdJQQUFUn95yzJs1kGLBhtFXr7eGsJ1bYns12wyZ2GyHJB",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM4zgHjLrLi1w8MnLEgcgi76Sz5psjFNPp7mYvQbzGXgL7jeGHkb",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5itgF2CnNT1fs4xmXKKk3ahQ9znX9bucm4G37sEtTkaaH15YFm",
        1
      ]
    ]
  },
  "memo": "STM6oe4V9TPmAs8Pux2Eg9SpFhAXwRtTPeYziAYmNdjDb8VSgwBrz"
}

Witness Votes

0 / 30
No active witness votes.
[]