VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS44.21%
Net Worth
1.783USD
STEEM
0.073STEEM
SBD
0.074SBD
Own SP
32.537SP
Detailed Balance
| STEEM | ||
| balance | 0.039STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.034STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 32.537SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 0.000SP | SP |
| Effective Power | 32.537SP | SP |
| Reward SP (pending) | 0.034SP | SP |
| SBD | ||
| sbd_balance | 0.074SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.000SBD | SBD |
{
"balance": "0.039 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.034 STEEM",
"vesting_shares": "52984.559821 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "0.000000 VESTS",
"sbd_balance": "0.074 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.000 SBD",
"conversions": []
}Account Info
| name | loum |
| id | 27619 |
| rank | 59,580 |
| reputation | 6712813070489 |
| created | 2016-07-19T02:36:27 |
| recovery_account | steem |
| proxy | None |
| post_count | 721 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2022-10-29T16:19:48 |
| last_root_post | 2022-10-29T16:19:48 |
| last_vote_time | 2022-10-30T05:45:09 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 9,799 |
| delayed_votes | 0 |
| balance | 0.039 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.074 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 52984.559821 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 0.000000 VESTS |
| reward_vesting_balance | 60.964045 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 2017-06-22T02:20:54 |
| last_account_update | 2022-10-18T07:12:18 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 2021-08-23T04:22:54 |
| savings_sbd_last_interest_payment | 2017-12-18T06:39:42 |
{
"id": 27619,
"name": "loum",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8NFaszEbFgqHYNePvo6hBmy3VfeAUvhuiy6htmmPEC4d7i2sQB",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7nHptf87cAWsdyKCLQDVzsotpCXNzWzFYzV3ULPZ7GCHNoMycS",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM4zatsUEkF6omzaefba6y6nZZxvLgvVpJ5TqMNDEzYQpDZYnwXV",
1
]
]
},
"memo_key": "STM6JAxKTLGQn9izx1vk14ayQZkbva7TxMBiXSFNEJk6cfThZaejT",
"json_metadata": "{\"profile\":{\"about\":\"제가 17.5.8일에 Ledger 저널에 제출한 논문: https://goo.gl/EprsXt\",\"name\":\"loum\",\"location\":\"Seoul, Korea\"}}",
"posting_json_metadata": "{\"profile\":{\"name\":\"Kim, Sungil\",\"location\":\"Seoul, Korea\",\"version\":2,\"about\":\"전자공학 박사이고, https://url.kr/oi9fhd 제가 쓴 논문\"}}",
"proxy": "",
"last_owner_update": "2017-06-22T02:20:54",
"last_account_update": "2022-10-18T07:12:18",
"created": "2016-07-19T02:36:27",
"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": 721,
"can_vote": true,
"voting_manabar": {
"current_mana": "51924868624",
"last_update_time": 1667108709
},
"downvote_manabar": {
"current_mana": "13246139955",
"last_update_time": 1667108709
},
"voting_power": 9799,
"balance": "0.039 STEEM",
"savings_balance": "0.000 STEEM",
"sbd_balance": "0.074 SBD",
"sbd_seconds": "0",
"sbd_seconds_last_update": "2021-08-23T04:22:54",
"sbd_last_interest_payment": "2021-08-23T04:22:54",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "2017-12-18T06:39:42",
"savings_sbd_last_interest_payment": "2017-12-18T06:39:42",
"savings_withdraw_requests": 0,
"reward_sbd_balance": "0.000 SBD",
"reward_steem_balance": "0.034 STEEM",
"reward_vesting_balance": "60.964045 VESTS",
"reward_vesting_steem": "0.034 STEEM",
"vesting_shares": "52984.559821 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "0.000000 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"withdrawn": 0,
"to_withdraw": 0,
"withdraw_routes": 0,
"curation_rewards": 1193,
"posting_rewards": 1046276,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"witnesses_voted_for": 0,
"last_post": "2022-10-29T16:19:48",
"last_root_post": "2022-10-29T16:19:48",
"last_vote_time": "2022-10-30T05:45:09",
"post_bandwidth": 169418,
"pending_claimed_accounts": 0,
"vesting_balance": "0.000 STEEM",
"reputation": "6712813070489",
"transfer_history": [],
"market_history": [],
"post_history": [],
"vote_history": [],
"other_history": [],
"witness_votes": [],
"tags_usage": [],
"guest_bloggers": [],
"rank": 59580
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2023/03/11 05:57:30
2023/03/11 05:57:30
| voter | jooykim |
| author | loum |
| permlink | 51vwsx |
| weight | 10000 (100.00%) |
| Transaction Info | Block #72772454/Trx 37e8ce5e7a15dd9245aa6de039eb507f7cd5ecf8 |
View Raw JSON Data
{
"trx_id": "37e8ce5e7a15dd9245aa6de039eb507f7cd5ecf8",
"block": 72772454,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-03-11T05:57:30",
"op": [
"vote",
{
"voter": "jooykim",
"author": "loum",
"permlink": "51vwsx",
"weight": 10000
}
]
}2023/03/11 05:57:12
2023/03/11 05:57:12
| voter | jooykim |
| author | loum |
| permlink | 51vwsx |
| weight | 10000 (100.00%) |
| Transaction Info | Block #72772448/Trx f0171b135696dfa2e2682c582a8e0797413f6a6e |
View Raw JSON Data
{
"trx_id": "f0171b135696dfa2e2682c582a8e0797413f6a6e",
"block": 72772448,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-03-11T05:57:12",
"op": [
"vote",
{
"voter": "jooykim",
"author": "loum",
"permlink": "51vwsx",
"weight": 10000
}
]
}2023/01/11 22:04:33
2023/01/11 22:04:33
| from | steemegg |
| to | loum |
| amount | 0.001 STEEM |
| memo | Accumulate free upvotes on your posts every 6 hours! All you need to do is vote our witness account -> se-witness as one of your 30 witness votes. -> See actual rewards not just 0.001 every day. https://steemlogin.com/sign/account-witness-vote?witness=se-witness&approve=1 |
| Transaction Info | Block #71100924/Trx afb37b7f08b8e2d267c99df56d1703c3a88695c7 |
View Raw JSON Data
{
"trx_id": "afb37b7f08b8e2d267c99df56d1703c3a88695c7",
"block": 71100924,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-01-11T22:04:33",
"op": [
"transfer",
{
"from": "steemegg",
"to": "loum",
"amount": "0.001 STEEM",
"memo": "Accumulate free upvotes on your posts every 6 hours! All you need to do is vote our witness account -> se-witness as one of your 30 witness votes. -> See actual rewards not just 0.001 every day. https://steemlogin.com/sign/account-witness-vote?witness=se-witness&approve=1"
}
]
}2022/11/05 16:08:42
2022/11/05 16:08:42
| author | loum |
| permlink | 2mmnuj |
| sbd payout | 0.000 SBD |
| steem payout | 0.034 STEEM |
| vesting payout | 60.964045 VESTS |
| Transaction Info | Block #69175904/Virtual Operation #3 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 69175904,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 3,
"timestamp": "2022-11-05T16:08:42",
"op": [
"author_reward",
{
"author": "loum",
"permlink": "2mmnuj",
"sbd_payout": "0.000 SBD",
"steem_payout": "0.034 STEEM",
"vesting_payout": "60.964045 VESTS"
}
]
}2022/10/30 05:45:09
2022/10/30 05:45:09
| voter | loum |
| author | loum |
| permlink | 2mmnuj |
| weight | 10000 (100.00%) |
| Transaction Info | Block #68991453/Trx e2fbe69134a0f3a29c3abb078c6555846fc59008 |
View Raw JSON Data
{
"trx_id": "e2fbe69134a0f3a29c3abb078c6555846fc59008",
"block": 68991453,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-10-30T05:45:09",
"op": [
"vote",
{
"voter": "loum",
"author": "loum",
"permlink": "2mmnuj",
"weight": 10000
}
]
}2022/10/30 03:41:12
2022/10/30 03:41:12
| voter | nnaraoh |
| author | loum |
| permlink | 2mmnuj |
| weight | 10000 (100.00%) |
| Transaction Info | Block #68988986/Trx 964bc5b02347de97c1bec6f9b7606238ed23dd3c |
View Raw JSON Data
{
"trx_id": "964bc5b02347de97c1bec6f9b7606238ed23dd3c",
"block": 68988986,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-10-30T03:41:12",
"op": [
"vote",
{
"voter": "nnaraoh",
"author": "loum",
"permlink": "2mmnuj",
"weight": 10000
}
]
}2022/10/29 16:19:48
2022/10/29 16:19:48
| parent author | |
| parent permlink | loum |
| author | loum |
| permlink | 7mn3b2 |
| title | 선언 |
| body | 이곳의 내글은 본인 소유이며 이곳은 기본적인 거버넌스도 가지고 있지 못하다. 따라서 나 loum은 이 플랫폼을 싫어한다. 이 서비스는 장차 폭파될 것이다. 나는 이 서비스가 폭파되는 것을 원한다. 내 글은 '상생의 세상' 사이트를 통해서만 타인에게 정보로 제공될 수 있다. 22.10.29 1oum |
| json metadata | {"tags":["loum"],"app":"steemit/0.2","format":"markdown"} |
| Transaction Info | Block #68975560/Trx a333391e92b443759da38ada71767f4d5d3cbca4 |
View Raw JSON Data
{
"trx_id": "a333391e92b443759da38ada71767f4d5d3cbca4",
"block": 68975560,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-10-29T16:19:48",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "loum",
"author": "loum",
"permlink": "7mn3b2",
"title": "선언",
"body": "이곳의 내글은 본인 소유이며\n이곳은 기본적인 거버넌스도 가지고 있지 못하다.\n\n따라서 나 loum은 이 플랫폼을 싫어한다.\n이 서비스는 장차 폭파될 것이다.\n\n\n나는 이 서비스가 폭파되는 것을 원한다.\n내 글은 '상생의 세상' 사이트를 통해서만 타인에게 정보로 제공될 수 있다.\n\n\n22.10.29\n\n1oum",
"json_metadata": "{\"tags\":[\"loum\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
}
]
}2022/10/29 16:14:00
2022/10/29 16:14:00
| parent author | |
| parent permlink | hanaloum |
| author | loum |
| permlink | 3ccs2r |
| title | 나는 하이브에 내 글을 도둑 당했다고 생각한다 |
| body | 그 어느 누구도 내 글을 하이브로 옮길 것을 물어보지 않았다. 그러므로 하이브에 있는 내글은 지워야 한다. 결론적으로 하이브에 있는 내글은 즉시 지울 것을 요구한다. 22.10.30 로움 |
| json metadata | {"tags":["hanaloum"],"app":"steemit/0.2","format":"markdown"} |
| Transaction Info | Block #68975452/Trx 5bc578b548f3000777138d6acab8428a67ececa7 |
View Raw JSON Data
{
"trx_id": "5bc578b548f3000777138d6acab8428a67ececa7",
"block": 68975452,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-10-29T16:14:00",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "hanaloum",
"author": "loum",
"permlink": "3ccs2r",
"title": "나는 하이브에 내 글을 도둑 당했다고 생각한다",
"body": "그 어느 누구도 내 글을 하이브로 옮길 것을 물어보지 않았다.\n그러므로 하이브에 있는 내글은 지워야 한다.\n\n결론적으로 하이브에 있는 내글은 즉시 지울 것을 요구한다.\n\n\n22.10.30\n\n로움",
"json_metadata": "{\"tags\":[\"hanaloum\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
}
]
}alexmove.witnesssent 0.001 STEEM to @loum- "Please support me @alexmove.witness as witness on site https://steemitwallet.com/~witnesses. I send daily Witness vote STEEM reward and voted for some posts of those who voted. Your vote is very impor..."2022/10/29 16:11:03
alexmove.witnesssent 0.001 STEEM to @loum- "Please support me @alexmove.witness as witness on site https://steemitwallet.com/~witnesses. I send daily Witness vote STEEM reward and voted for some posts of those who voted. Your vote is very impor..."
2022/10/29 16:11:03
| from | alexmove.witness |
| to | loum |
| amount | 0.001 STEEM |
| memo | Please support me @alexmove.witness as witness on site https://steemitwallet.com/~witnesses. I send daily Witness vote STEEM reward and voted for some posts of those who voted. Your vote is very important to me, loum! Good luck! 20221029 |
| Transaction Info | Block #68975396/Trx eec821c1a2a564af2a8e566b052e50364a07aa98 |
View Raw JSON Data
{
"trx_id": "eec821c1a2a564af2a8e566b052e50364a07aa98",
"block": 68975396,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-10-29T16:11:03",
"op": [
"transfer",
{
"from": "alexmove.witness",
"to": "loum",
"amount": "0.001 STEEM",
"memo": "Please support me @alexmove.witness as witness on site https://steemitwallet.com/~witnesses. I send daily Witness vote STEEM reward and voted for some posts of those who voted. Your vote is very important to me, loum! Good luck! 20221029"
}
]
}2022/10/29 16:08:42
2022/10/29 16:08:42
| parent author | |
| parent permlink | loum |
| author | loum |
| permlink | 2mmnuj |
| title | 로움은 스팀잇에 글을 작성했음 |
| body | 하나로움, 로움은 스팀잇에 글을 올렸고. *제리의 불합리하게 내 글을 블록킹하였음 하이브에 내글은 도둑질 당한 것임을 이야기함 22.10.30 하나로움(로움) |
| json metadata | {"tags":["loum"],"app":"steemit/0.2","format":"markdown"} |
| Transaction Info | Block #68975351/Trx 75bbe9023bc48db347874f6505e2a9ee5d490c50 |
View Raw JSON Data
{
"trx_id": "75bbe9023bc48db347874f6505e2a9ee5d490c50",
"block": 68975351,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-10-29T16:08:42",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "loum",
"author": "loum",
"permlink": "2mmnuj",
"title": "로움은 스팀잇에 글을 작성했음",
"body": "하나로움, 로움은 스팀잇에 글을 올렸고.\n\n*제리의 불합리하게 내 글을 블록킹하였음\n\n하이브에 내글은 도둑질 당한 것임을 이야기함\n\n\n22.10.30\n\n하나로움(로움)",
"json_metadata": "{\"tags\":[\"loum\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
}
]
}loumupdated their account properties2022/10/18 07:12:18
loumupdated their account properties
2022/10/18 07:12:18
| account | loum |
| json metadata | |
| posting json metadata | {"profile":{"name":"Kim, Sungil","location":"Seoul, Korea","version":2,"about":"전자공학 박사이고, https://url.kr/oi9fhd 제가 쓴 논문"}} |
| extensions | [] |
| Transaction Info | Block #68649317/Trx 9a829d654e6e4143b31d7bf33e110f8b4512c05f |
View Raw JSON Data
{
"trx_id": "9a829d654e6e4143b31d7bf33e110f8b4512c05f",
"block": 68649317,
"trx_in_block": 10,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-10-18T07:12:18",
"op": [
"account_update2",
{
"account": "loum",
"json_metadata": "",
"posting_json_metadata": "{\"profile\":{\"name\":\"Kim, Sungil\",\"location\":\"Seoul, Korea\",\"version\":2,\"about\":\"전자공학 박사이고, https://url.kr/oi9fhd 제가 쓴 논문\"}}",
"extensions": []
}
]
}loumcustom json: notify2022/09/05 10:05:33
loumcustom json: notify
2022/09/05 10:05:33
| required auths | [] |
| required posting auths | ["loum"] |
| id | notify |
| json | ["setLastRead",{"date":"2022-09-05T10:05:34"}] |
| Transaction Info | Block #67420875/Trx 56a6af45019b4a04ae2841572139c3db21c4c8b9 |
View Raw JSON Data
{
"trx_id": "56a6af45019b4a04ae2841572139c3db21c4c8b9",
"block": 67420875,
"trx_in_block": 10,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-09-05T10:05:33",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"loum"
],
"id": "notify",
"json": "[\"setLastRead\",{\"date\":\"2022-09-05T10:05:34\"}]"
}
]
}loumupdated their account properties2022/09/05 10:04:18
loumupdated their account properties
2022/09/05 10:04:18
| account | loum |
| json metadata | |
| posting json metadata | {"profile":{"name":"zz","location":"Seoul, Korea","version":2}} |
| extensions | [] |
| Transaction Info | Block #67420850/Trx 0972e5a27a348af7d8c9aeba921d423c2f76445f |
View Raw JSON Data
{
"trx_id": "0972e5a27a348af7d8c9aeba921d423c2f76445f",
"block": 67420850,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-09-05T10:04:18",
"op": [
"account_update2",
{
"account": "loum",
"json_metadata": "",
"posting_json_metadata": "{\"profile\":{\"name\":\"zz\",\"location\":\"Seoul, Korea\",\"version\":2}}",
"extensions": []
}
]
}ph-supportsent 0.001 STEEM to @loum2022/08/17 06:18:42
ph-supportsent 0.001 STEEM to @loum
2022/08/17 06:18:42
| from | ph-support |
| to | loum |
| amount | 0.001 STEEM |
| memo | |
| Transaction Info | Block #66874372/Trx 730461a08ce2223f552633a9bd6c68c7a1c53e49 |
View Raw JSON Data
{
"trx_id": "730461a08ce2223f552633a9bd6c68c7a1c53e49",
"block": 66874372,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-08-17T06:18:42",
"op": [
"transfer",
{
"from": "ph-support",
"to": "loum",
"amount": "0.001 STEEM",
"memo": ""
}
]
}seupupvoted (100.00%) @loum / nothing-at-stake2021/09/30 04:32:33
seupupvoted (100.00%) @loum / nothing-at-stake
2021/09/30 04:32:33
| voter | seup |
| author | loum |
| permlink | nothing-at-stake |
| weight | 10000 (100.00%) |
| Transaction Info | Block #57692298/Trx 187c9c4e180704ece59e61382f6fe605c85ae765 |
View Raw JSON Data
{
"trx_id": "187c9c4e180704ece59e61382f6fe605c85ae765",
"block": 57692298,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-09-30T04:32:33",
"op": [
"vote",
{
"voter": "seup",
"author": "loum",
"permlink": "nothing-at-stake",
"weight": 10000
}
]
}2021/09/15 07:26:54
2021/09/15 07:26:54
| voter | seeyoung |
| author | loum |
| permlink | 6knvph-2 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #57267320/Trx 850284e706acac266a0f3021fc0d03bf235c9e42 |
View Raw JSON Data
{
"trx_id": "850284e706acac266a0f3021fc0d03bf235c9e42",
"block": 57267320,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-09-15T07:26:54",
"op": [
"vote",
{
"voter": "seeyoung",
"author": "loum",
"permlink": "6knvph-2",
"weight": 10000
}
]
}loumcustom json: notify2021/08/23 04:24:06
loumcustom json: notify
2021/08/23 04:24:06
| required auths | [] |
| required posting auths | ["loum"] |
| id | notify |
| json | ["setLastRead",{"date":"2021-08-23T04:24:04"}] |
| Transaction Info | Block #56605901/Trx 3b5a179d35df49ca40b1eec992aacbde387e42b2 |
View Raw JSON Data
{
"trx_id": "3b5a179d35df49ca40b1eec992aacbde387e42b2",
"block": 56605901,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-23T04:24:06",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"loum"
],
"id": "notify",
"json": "[\"setLastRead\",{\"date\":\"2021-08-23T04:24:04\"}]"
}
]
}loumclaimed reward balance: 0.042 SBD, 0.090 SP2021/08/23 04:22:54
loumclaimed reward balance: 0.042 SBD, 0.090 SP
2021/08/23 04:22:54
| account | loum |
| reward steem | 0.000 STEEM |
| reward sbd | 0.042 SBD |
| reward vests | 147.170280 VESTS |
| Transaction Info | Block #56605877/Trx fde8a507b191bb22081679322e6e10db024d6b24 |
View Raw JSON Data
{
"trx_id": "fde8a507b191bb22081679322e6e10db024d6b24",
"block": 56605877,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-23T04:22:54",
"op": [
"claim_reward_balance",
{
"account": "loum",
"reward_steem": "0.000 STEEM",
"reward_sbd": "0.042 SBD",
"reward_vests": "147.170280 VESTS"
}
]
}loumreceived 0.021 SBD, 0.045 SP author reward for @loum / new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions2021/08/14 06:18:39
loumreceived 0.021 SBD, 0.045 SP author reward for @loum / new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions
2021/08/14 06:18:39
| author | loum |
| permlink | new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions |
| sbd payout | 0.021 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 72.653669 VESTS |
| Transaction Info | Block #56350588/Virtual Operation #3 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 56350588,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 3,
"timestamp": "2021-08-14T06:18:39",
"op": [
"author_reward",
{
"author": "loum",
"permlink": "new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions",
"sbd_payout": "0.021 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "72.653669 VESTS"
}
]
}2021/08/14 06:12:57
2021/08/14 06:12:57
| author | loum |
| permlink | 2wifdu |
| sbd payout | 0.021 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 74.516611 VESTS |
| Transaction Info | Block #56350475/Virtual Operation #3 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 56350475,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 3,
"timestamp": "2021-08-14T06:12:57",
"op": [
"author_reward",
{
"author": "loum",
"permlink": "2wifdu",
"sbd_payout": "0.021 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "74.516611 VESTS"
}
]
}2021/08/08 02:42:39
2021/08/08 02:42:39
| voter | nnaraoh |
| author | loum |
| permlink | new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions |
| weight | 10000 (100.00%) |
| Transaction Info | Block #56174576/Trx 3d8002b841acf0b0ce404dacaf8faa8761b622d7 |
View Raw JSON Data
{
"trx_id": "3d8002b841acf0b0ce404dacaf8faa8761b622d7",
"block": 56174576,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-08T02:42:39",
"op": [
"vote",
{
"voter": "nnaraoh",
"author": "loum",
"permlink": "new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions",
"weight": 10000
}
]
}2021/08/08 02:42:21
2021/08/08 02:42:21
| voter | nnaraoh |
| author | loum |
| permlink | 2wifdu |
| weight | 10000 (100.00%) |
| Transaction Info | Block #56174570/Trx 8bd865aff37aa9ba92433a6f96817f145d1fa276 |
View Raw JSON Data
{
"trx_id": "8bd865aff37aa9ba92433a6f96817f145d1fa276",
"block": 56174570,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-08T02:42:21",
"op": [
"vote",
{
"voter": "nnaraoh",
"author": "loum",
"permlink": "2wifdu",
"weight": 10000
}
]
}loumpublished a new post: new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions2021/08/07 06:20:54
loumpublished a new post: new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions
2021/08/07 06:20:54
| parent author | |
| parent permlink | blockchain |
| author | loum |
| permlink | new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions |
| title | (Ledger Journal) New lending system with collateral deposited in the long and/or short directions |
| body | @@ -107,16 +107,70 @@ below. %0A +http://ledgerjournal.org/ojs/ledger/article/view/215 ( New Cryp @@ -234,62 +234,9 @@ ion -: http://ledgerjournal.org/ojs/ledger/article/view/215 +) %0A%0A-- |
| json metadata | {"tags":["lending","long","or","short","two-way","direction"],"links":["http://ledgerjournal.org/ojs/ledger/article/view/215"],"app":"steemit/0.2","format":"markdown"} |
| Transaction Info | Block #56150336/Trx 18ce8b54ed5c5ad7330d42ce474759844a083b36 |
View Raw JSON Data
{
"trx_id": "18ce8b54ed5c5ad7330d42ce474759844a083b36",
"block": 56150336,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:20:54",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "loum",
"permlink": "new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions",
"title": "(Ledger Journal) New lending system with collateral deposited in the long and/or short directions",
"body": "@@ -107,16 +107,70 @@\n below. %0A\n+http://ledgerjournal.org/ojs/ledger/article/view/215 (\n New Cryp\n@@ -234,62 +234,9 @@\n ion \n-: http://ledgerjournal.org/ojs/ledger/article/view/215\n+)\n %0A%0A--\n",
"json_metadata": "{\"tags\":[\"lending\",\"long\",\"or\",\"short\",\"two-way\",\"direction\"],\"links\":[\"http://ledgerjournal.org/ojs/ledger/article/view/215\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
}
]
}loumpublished a new post: new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions2021/08/07 06:20:18
loumpublished a new post: new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions
2021/08/07 06:20:18
| parent author | |
| parent permlink | blockchain |
| author | loum |
| permlink | new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions |
| title | (Ledger Journal) New lending system with collateral deposited in the long and/or short directions |
| body | @@ -232,16 +232,27 @@ ew/215%0A%0A +----------- %0AAn easy |
| json metadata | {"tags":["lending","long","or","short","two-way","direction"],"links":["http://ledgerjournal.org/ojs/ledger/article/view/215"],"app":"steemit/0.2","format":"markdown"} |
| Transaction Info | Block #56150324/Trx 267051bc31e89a406f0ff5cd141c6e81a7066ff9 |
View Raw JSON Data
{
"trx_id": "267051bc31e89a406f0ff5cd141c6e81a7066ff9",
"block": 56150324,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:20:18",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "loum",
"permlink": "new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions",
"title": "(Ledger Journal) New lending system with collateral deposited in the long and/or short directions",
"body": "@@ -232,16 +232,27 @@\n ew/215%0A%0A\n+-----------\n %0AAn easy\n",
"json_metadata": "{\"tags\":[\"lending\",\"long\",\"or\",\"short\",\"two-way\",\"direction\"],\"links\":[\"http://ledgerjournal.org/ojs/ledger/article/view/215\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
}
]
}loumpublished a new post: new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions2021/08/07 06:19:57
loumpublished a new post: new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions
2021/08/07 06:19:57
| parent author | |
| parent permlink | blockchain |
| author | loum |
| permlink | new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions |
| title | (Ledger Journal) New lending system with collateral deposited in the long and/or short directions |
| body | This is about my article in the Ledger Journal on February 10, 2021. You can see my article from the link below. New Crypto-Secured Lending System with a Two-Way Collateral Function : http://ledgerjournal.org/ojs/ledger/article/view/215 An easy explanation of my article is as follows. Existing collateral loans can be seen as upward collateral, which increases collateral value when the price of collateral price rises. My article can add a downward collateral that increases the collateral value when the price of collateral falls. Therefore, the borrower may choose one of the following three: 1) upward collateral, 2) downward collateral, 3) combination of the two. In particular, in the case of a combination of the two, new hedged portion is newly introduced, with part of the two-way collateral being hedged by the two-way collateral ratio. Conventional secured lending systems cannot include this hedged portion. With a 70:30 collateral ratio, for example, 30% of the two-way collateral in both the upside and downside collateral (i.e., a total of 60%) is completely hedged against each other. Therefore, this portion always maintains the same value as at the time of the loan provision, irrespective of price changes of Bitcoin after the loan commitment. This represents a “stable portion” of two-way collateral, in which the value of the two-way collateral does not change during a loan period. The remaining 40% is the unhedged portion because the value of this portion changes with the price fluctuation of Bitcoin. This represents an “unstable portion” of two-way collateral. In this case, therefore, the two-way collateral’s hedged and unhedged portions equal 0.6 BTC and 0.4 BTC, respectively. Therefore, my article is the first to propose the downward loans, and it can be thought of as an upgraded version of MakerDao. |
| json metadata | {"tags":["lending","long","or","short","two-way","direction"],"links":["http://ledgerjournal.org/ojs/ledger/article/view/215"],"app":"steemit/0.2","format":"markdown"} |
| Transaction Info | Block #56150317/Trx 71a4d7353750f2e1eeaf9d2c3a2d69d7632b080f |
View Raw JSON Data
{
"trx_id": "71a4d7353750f2e1eeaf9d2c3a2d69d7632b080f",
"block": 56150317,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:19:57",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "loum",
"permlink": "new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions",
"title": "(Ledger Journal) New lending system with collateral deposited in the long and/or short directions",
"body": "This is about my article in the Ledger Journal on February 10, 2021. You can see my article from the link below. \nNew Crypto-Secured Lending System with a Two-Way Collateral Function : http://ledgerjournal.org/ojs/ledger/article/view/215\n\n\nAn easy explanation of my article is as follows.\nExisting collateral loans can be seen as upward collateral, which increases collateral value when the price of collateral price rises. My article can add a downward collateral that increases the collateral value when the price of collateral falls. Therefore, the borrower may choose one of the following three: 1) upward collateral, 2) downward collateral, 3) combination of the two.\nIn particular, in the case of a combination of the two, new hedged portion is newly introduced, with part of the two-way collateral being hedged by the two-way collateral ratio. Conventional secured lending systems cannot include this hedged portion. With a 70:30 collateral ratio, for example, 30% of the two-way collateral in both the upside and downside collateral (i.e., a total of 60%) is completely hedged against each other. Therefore, this portion always maintains the same value as at the time of the loan provision, irrespective of price changes of Bitcoin after the loan commitment. This represents a “stable portion” of two-way collateral, in which the value of the two-way collateral does not change during a loan period. The remaining 40% is the unhedged portion because the value of this portion changes with the price fluctuation of Bitcoin. This represents an “unstable portion” of two-way collateral. In this case, therefore, the two-way collateral’s hedged and unhedged portions equal 0.6 BTC and 0.4 BTC, respectively.\nTherefore, my article is the first to propose the downward loans, and it can be thought of as an upgraded version of MakerDao.",
"json_metadata": "{\"tags\":[\"lending\",\"long\",\"or\",\"short\",\"two-way\",\"direction\"],\"links\":[\"http://ledgerjournal.org/ojs/ledger/article/view/215\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
}
]
}2021/08/07 06:19:12
2021/08/07 06:19:12
| voter | loum |
| author | loum |
| permlink | 2wifdu |
| weight | 0 (0.00%) |
| Transaction Info | Block #56150302/Trx 3f1975673f4be2cf6871af6794187e9ae391eba1 |
View Raw JSON Data
{
"trx_id": "3f1975673f4be2cf6871af6794187e9ae391eba1",
"block": 56150302,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:19:12",
"op": [
"vote",
{
"voter": "loum",
"author": "loum",
"permlink": "2wifdu",
"weight": 0
}
]
}2021/08/07 06:19:03
2021/08/07 06:19:03
| voter | loum |
| author | loum |
| permlink | 2wifdu |
| weight | 10000 (100.00%) |
| Transaction Info | Block #56150299/Trx c319fd1b114894f1fa12685666573ca72c4f436d |
View Raw JSON Data
{
"trx_id": "c319fd1b114894f1fa12685666573ca72c4f436d",
"block": 56150299,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:19:03",
"op": [
"vote",
{
"voter": "loum",
"author": "loum",
"permlink": "2wifdu",
"weight": 10000
}
]
}loumpublished a new post: new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions2021/08/07 06:18:39
loumpublished a new post: new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions
2021/08/07 06:18:39
| parent author | |
| parent permlink | blockchain |
| author | loum |
| permlink | new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions |
| title | New lending system with collateral deposited in the long and/or short directions |
| body | This is about my article in the Ledger Journal on February 10, 2021. You can see my article from the link below. New Crypto-Secured Lending System with a Two-Way Collateral Function : http://ledgerjournal.org/ojs/ledger/article/view/215 An easy explanation of my article is as follows. Existing collateral loans can be seen as upward collateral, which increases collateral value when the price of collateral price rises. My article can add a downward collateral that increases the collateral value when the price of collateral falls. Therefore, the borrower may choose one of the following three: 1) upward collateral, 2) downward collateral, 3) combination of the two. In particular, in the case of a combination of the two, new hedged portion is newly introduced, with part of the two-way collateral being hedged by the two-way collateral ratio. Conventional secured lending systems cannot include this hedged portion. With a 70:30 collateral ratio, for example, 30% of the two-way collateral in both the upside and downside collateral (i.e., a total of 60%) is completely hedged against each other. Therefore, this portion always maintains the same value as at the time of the loan provision, irrespective of price changes of Bitcoin after the loan commitment. This represents a “stable portion” of two-way collateral, in which the value of the two-way collateral does not change during a loan period. The remaining 40% is the unhedged portion because the value of this portion changes with the price fluctuation of Bitcoin. This represents an “unstable portion” of two-way collateral. In this case, therefore, the two-way collateral’s hedged and unhedged portions equal 0.6 BTC and 0.4 BTC, respectively. Therefore, my article is the first to propose the downward loans, and it can be thought of as an upgraded version of MakerDao. |
| json metadata | {"tags":["blockchain","lending","long","or","short","two-way","direction"],"links":["http://ledgerjournal.org/ojs/ledger/article/view/215"],"app":"steemit/0.2","format":"markdown"} |
| Transaction Info | Block #56150291/Trx c201163faaaf0fc17ff165bb4ce5fd70f21ffc6b |
View Raw JSON Data
{
"trx_id": "c201163faaaf0fc17ff165bb4ce5fd70f21ffc6b",
"block": 56150291,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:18:39",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "loum",
"permlink": "new-lending-system-with-collateral-deposited-in-the-long-and-or-short-directions",
"title": "New lending system with collateral deposited in the long and/or short directions",
"body": "This is about my article in the Ledger Journal on February 10, 2021. You can see my article from the link below. \nNew Crypto-Secured Lending System with a Two-Way Collateral Function : http://ledgerjournal.org/ojs/ledger/article/view/215\n\n\nAn easy explanation of my article is as follows.\nExisting collateral loans can be seen as upward collateral, which increases collateral value when the price of collateral price rises. My article can add a downward collateral that increases the collateral value when the price of collateral falls. Therefore, the borrower may choose one of the following three: 1) upward collateral, 2) downward collateral, 3) combination of the two.\nIn particular, in the case of a combination of the two, new hedged portion is newly introduced, with part of the two-way collateral being hedged by the two-way collateral ratio. Conventional secured lending systems cannot include this hedged portion. With a 70:30 collateral ratio, for example, 30% of the two-way collateral in both the upside and downside collateral (i.e., a total of 60%) is completely hedged against each other. Therefore, this portion always maintains the same value as at the time of the loan provision, irrespective of price changes of Bitcoin after the loan commitment. This represents a “stable portion” of two-way collateral, in which the value of the two-way collateral does not change during a loan period. The remaining 40% is the unhedged portion because the value of this portion changes with the price fluctuation of Bitcoin. This represents an “unstable portion” of two-way collateral. In this case, therefore, the two-way collateral’s hedged and unhedged portions equal 0.6 BTC and 0.4 BTC, respectively.\nTherefore, my article is the first to propose the downward loans, and it can be thought of as an upgraded version of MakerDao.",
"json_metadata": "{\"tags\":[\"blockchain\",\"lending\",\"long\",\"or\",\"short\",\"two-way\",\"direction\"],\"links\":[\"http://ledgerjournal.org/ojs/ledger/article/view/215\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
}
]
}executive-boardsent 0.001 STEEM to @loum- "❗ Hello loum, great that you are using the STEEM blockchain. The Executive Board is publishing insider infos at https://discord.gg/KyBbmhh on how you will be earning the most coins. It's easy, just fo..."2021/08/07 06:14:09
executive-boardsent 0.001 STEEM to @loum- "❗ Hello loum, great that you are using the STEEM blockchain. The Executive Board is publishing insider infos at https://discord.gg/KyBbmhh on how you will be earning the most coins. It's easy, just fo..."
2021/08/07 06:14:09
| from | executive-board |
| to | loum |
| amount | 0.001 STEEM |
| memo | ❗ Hello loum, great that you are using the STEEM blockchain. The Executive Board is publishing insider infos at https://discord.gg/KyBbmhh on how you will be earning the most coins. It's easy, just follow the instructions. THE 1000X BOOSTER KEY is already waiting for you over there too. 😉 Warm regards, The Executive Board. |
| Transaction Info | Block #56150202/Trx 7c2f3c04673cae23c35f1969a472ba76808bd03a |
View Raw JSON Data
{
"trx_id": "7c2f3c04673cae23c35f1969a472ba76808bd03a",
"block": 56150202,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:14:09",
"op": [
"transfer",
{
"from": "executive-board",
"to": "loum",
"amount": "0.001 STEEM",
"memo": "❗ Hello loum, great that you are using the STEEM blockchain. The Executive Board is publishing insider infos at https://discord.gg/KyBbmhh on how you will be earning the most coins. It's easy, just follow the instructions. THE 1000X BOOSTER KEY is already waiting for you over there too. 😉 Warm regards, The Executive Board."
}
]
}2021/08/07 06:12:57
2021/08/07 06:12:57
| parent author | |
| parent permlink | blockchain |
| author | loum |
| permlink | 2wifdu |
| title | 제가 쓴 담보물을 롱/솟에 예치할 수 있는 담보대출에 대한 논문 |
| body | 제가 쓴 담보대출에 대한 논문입니다. 단 단보물을 롱(long)과 솟(short) 방향으로 예치할 수 있는 양방향 예치 기능을 가지고 있습니다. 논문(영문): http://ledgerjournal.org/ojs/ledger/article/view/215 한글 번역논문: https://han.gl/fWFeQ |
| json metadata | {"tags":["blockchain","lending","two-way","direction"],"links":["http://ledgerjournal.org/ojs/ledger/article/view/215","https://han.gl/fWFeQ"],"app":"steemit/0.2","format":"markdown"} |
| Transaction Info | Block #56150178/Trx e409567563e4c2eee11b52ff50fa7e54aaf4316e |
View Raw JSON Data
{
"trx_id": "e409567563e4c2eee11b52ff50fa7e54aaf4316e",
"block": 56150178,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:12:57",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "loum",
"permlink": "2wifdu",
"title": "제가 쓴 담보물을 롱/솟에 예치할 수 있는 담보대출에 대한 논문",
"body": "제가 쓴 담보대출에 대한 논문입니다.\n단 단보물을 롱(long)과 솟(short) 방향으로 예치할 수 있는 양방향 예치 기능을 가지고 있습니다.\n\n논문(영문): http://ledgerjournal.org/ojs/ledger/article/view/215\n\n한글 번역논문: https://han.gl/fWFeQ",
"json_metadata": "{\"tags\":[\"blockchain\",\"lending\",\"two-way\",\"direction\"],\"links\":[\"http://ledgerjournal.org/ojs/ledger/article/view/215\",\"https://han.gl/fWFeQ\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}"
}
]
}loumupdated their account properties2021/08/07 06:07:12
loumupdated their account properties
2021/08/07 06:07:12
| account | loum |
| json metadata | |
| posting json metadata | {"profile":{"about":"http://제가 쓴 담보물을 롱/솟으로 예치하는 담보대출에 대한 저널 논문: ledgerjournal.org/ojs/ledger/article/view/215","name":"loum","location":"Seoul, Korea","version":2}} |
| extensions | [] |
| Transaction Info | Block #56150064/Trx 8ae49bb4660905df6916df15e7619efaee2e5162 |
View Raw JSON Data
{
"trx_id": "8ae49bb4660905df6916df15e7619efaee2e5162",
"block": 56150064,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-08-07T06:07:12",
"op": [
"account_update2",
{
"account": "loum",
"json_metadata": "",
"posting_json_metadata": "{\"profile\":{\"about\":\"http://제가 쓴 담보물을 롱/솟으로 예치하는 담보대출에 대한 저널 논문: ledgerjournal.org/ojs/ledger/article/view/215\",\"name\":\"loum\",\"location\":\"Seoul, Korea\",\"version\":2}}",
"extensions": []
}
]
}2020/09/18 06:33:54
2020/09/18 06:33:54
| required auths | [] |
| required posting auths | ["loum"] |
| id | follow |
| json | ["follow",{"follower":"loum","following":"donekim","what":["blog"]}] |
| Transaction Info | Block #46969368/Trx cc52b26325131bda92a8e01e5f46aea74b12e40e |
View Raw JSON Data
{
"trx_id": "cc52b26325131bda92a8e01e5f46aea74b12e40e",
"block": 46969368,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-09-18T06:33:54",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"loum"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"loum\",\"following\":\"donekim\",\"what\":[\"blog\"]}]"
}
]
}loumclaimed reward balance: 0.033 STEEM, 0.041 SP2019/11/08 08:47:39
loumclaimed reward balance: 0.033 STEEM, 0.041 SP
2019/11/08 08:47:39
| account | loum |
| reward steem | 0.033 STEEM |
| reward sbd | 0.000 SBD |
| reward vests | 67.146506 VESTS |
| Transaction Info | Block #37990552/Trx 018301d0f793d4bb8356d73a874f65c0db3d7c11 |
View Raw JSON Data
{
"trx_id": "018301d0f793d4bb8356d73a874f65c0db3d7c11",
"block": 37990552,
"trx_in_block": 16,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-11-08T08:47:39",
"op": [
"claim_reward_balance",
{
"account": "loum",
"reward_steem": "0.033 STEEM",
"reward_sbd": "0.000 SBD",
"reward_vests": "67.146506 VESTS"
}
]
}loumreceived 0.033 STEEM, 0.041 SP author reward for @loum / 3y9vyi-utxo-set-sorted-merkle-tree2019/10/29 07:51:45
loumreceived 0.033 STEEM, 0.041 SP author reward for @loum / 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/29 07:51:45
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| sbd payout | 0.000 SBD |
| steem payout | 0.033 STEEM |
| vesting payout | 67.146506 VESTS |
| Transaction Info | Block #37701982/Virtual Operation #5 |
View Raw JSON Data
{
"trx_id": "0000000000000000000000000000000000000000",
"block": 37701982,
"trx_in_block": 4294967295,
"op_in_trx": 0,
"virtual_op": 5,
"timestamp": "2019-10-29T07:51:45",
"op": [
"author_reward",
{
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"sbd_payout": "0.000 SBD",
"steem_payout": "0.033 STEEM",
"vesting_payout": "67.146506 VESTS"
}
]
}nnaraohupvoted (100.00%) @loum / 3y9vyi-utxo-set-sorted-merkle-tree2019/10/24 07:36:45
nnaraohupvoted (100.00%) @loum / 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/24 07:36:45
| voter | nnaraoh |
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| weight | 10000 (100.00%) |
| Transaction Info | Block #37557974/Trx d3eae434db011c425ed9df8fb1cfbfc889638054 |
View Raw JSON Data
{
"trx_id": "d3eae434db011c425ed9df8fb1cfbfc889638054",
"block": 37557974,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-24T07:36:45",
"op": [
"vote",
{
"voter": "nnaraoh",
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"weight": 10000
}
]
}loumpublished a new post: 3y9vyi-utxo-set-sorted-merkle-tree2019/10/22 08:42:27
loumpublished a new post: 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/22 08:42:27
| parent author | |
| parent permlink | bitcoin |
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| title | 비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree) |
| body | @@ -7,16 +7,22 @@ nter%3E%EA%B9%80%EC%84%B1%EC%9D%BC +(Loum) %3C/center @@ -35,16 +35,20 @@ %0A/* %EC%9D%B4 %EA%B8%80%EC%9D%80 + %EC%A0%9C%EA%B0%80 2017%EB%85%84 7 |
| json metadata | {"tags":["utxo","set","sorted","merkle","tree"],"image":["https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png","https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png","https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png"],"links":["https://bitcoin.org/bitcoin.pdf","https://en.wikipedia.org/wiki/Bitcoin_Core","https://en.bitcoin.it/wiki/Scalability","https://bitcoin.org/en/developer-guide#block-chain-overview","https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845","https://bitcoin.org/en/developer-guide#initial-block-download","https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning","https://en.bitcoin.it/wiki/Chain_Reorganization","https://bitcoin.org/en/developer-guide#full-node","http://statoshi.info/dashboard/db/unspent-transaction-output-set","https://bitcointalk.org/index.php?topic=101734.0","http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html","https://petertodd.org/2016/delayed-txo-commitments","https://en.wikipedia.org/wiki/Merkle_tree","https://blockchain.info/charts/utxo-count?timespan=all","https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0","http://gavwood.com/paper.pdf","https://cosmos.network/whitepaper"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #37501796/Trx 4581137552cfeaab6373e7ff078886e378190507 |
View Raw JSON Data
{
"trx_id": "4581137552cfeaab6373e7ff078886e378190507",
"block": 37501796,
"trx_in_block": 27,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-22T08:42:27",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "bitcoin",
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"title": "비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree)",
"body": "@@ -7,16 +7,22 @@\n nter%3E%EA%B9%80%EC%84%B1%EC%9D%BC\n+(Loum)\n %3C/center\n@@ -35,16 +35,20 @@\n %0A/* %EC%9D%B4 %EA%B8%80%EC%9D%80\n+ %EC%A0%9C%EA%B0%80 \n 2017%EB%85%84 7\n",
"json_metadata": "{\"tags\":[\"utxo\",\"set\",\"sorted\",\"merkle\",\"tree\"],\"image\":[\"https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png\",\"https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png\",\"https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png\"],\"links\":[\"https://bitcoin.org/bitcoin.pdf\",\"https://en.wikipedia.org/wiki/Bitcoin_Core\",\"https://en.bitcoin.it/wiki/Scalability\",\"https://bitcoin.org/en/developer-guide#block-chain-overview\",\"https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\",\"https://bitcoin.org/en/developer-guide#initial-block-download\",\"https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\",\"https://en.bitcoin.it/wiki/Chain_Reorganization\",\"https://bitcoin.org/en/developer-guide#full-node\",\"http://statoshi.info/dashboard/db/unspent-transaction-output-set\",\"https://bitcointalk.org/index.php?topic=101734.0\",\"http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\",\"https://petertodd.org/2016/delayed-txo-commitments\",\"https://en.wikipedia.org/wiki/Merkle_tree\",\"https://blockchain.info/charts/utxo-count?timespan=all\",\"https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\",\"http://gavwood.com/paper.pdf\",\"https://cosmos.network/whitepaper\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}loumpublished a new post: 3y9vyi-utxo-set-sorted-merkle-tree2019/10/22 08:40:21
loumpublished a new post: 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/22 08:40:21
| parent author | |
| parent permlink | bitcoin |
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| title | 비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree) |
| body | @@ -11,14 +11,8 @@ %3E%EA%B9%80%EC%84%B1%EC%9D%BC -(Loum) %3C/ce @@ -59,17 +59,17 @@ , %EC%9D%BC%EB%B6%80 %EB%82%B4%EC%9A%A9%EC%9D%80 -%EB%8A%94 + %EC%9D%B4 %EB%82%A0%EC%A7%9C%EB%A5%BC %EA%B8%B0%EC%A4%80 |
| json metadata | {"tags":["utxo","set","sorted","merkle","tree"],"image":["https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png","https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png","https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png"],"links":["https://bitcoin.org/bitcoin.pdf","https://en.wikipedia.org/wiki/Bitcoin_Core","https://en.bitcoin.it/wiki/Scalability","https://bitcoin.org/en/developer-guide#block-chain-overview","https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845","https://bitcoin.org/en/developer-guide#initial-block-download","https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning","https://en.bitcoin.it/wiki/Chain_Reorganization","https://bitcoin.org/en/developer-guide#full-node","http://statoshi.info/dashboard/db/unspent-transaction-output-set","https://bitcointalk.org/index.php?topic=101734.0","http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html","https://petertodd.org/2016/delayed-txo-commitments","https://en.wikipedia.org/wiki/Merkle_tree","https://blockchain.info/charts/utxo-count?timespan=all","https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0","http://gavwood.com/paper.pdf","https://cosmos.network/whitepaper"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #37501754/Trx 5c9bc34d33759df4bbf7d545618c87fce6423995 |
View Raw JSON Data
{
"trx_id": "5c9bc34d33759df4bbf7d545618c87fce6423995",
"block": 37501754,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-22T08:40:21",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "bitcoin",
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"title": "비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree)",
"body": "@@ -11,14 +11,8 @@\n %3E%EA%B9%80%EC%84%B1%EC%9D%BC\n-(Loum)\n %3C/ce\n@@ -59,17 +59,17 @@\n , %EC%9D%BC%EB%B6%80 %EB%82%B4%EC%9A%A9%EC%9D%80\n-%EB%8A%94\n+ \n %EC%9D%B4 %EB%82%A0%EC%A7%9C%EB%A5%BC %EA%B8%B0%EC%A4%80\n",
"json_metadata": "{\"tags\":[\"utxo\",\"set\",\"sorted\",\"merkle\",\"tree\"],\"image\":[\"https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png\",\"https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png\",\"https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png\"],\"links\":[\"https://bitcoin.org/bitcoin.pdf\",\"https://en.wikipedia.org/wiki/Bitcoin_Core\",\"https://en.bitcoin.it/wiki/Scalability\",\"https://bitcoin.org/en/developer-guide#block-chain-overview\",\"https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\",\"https://bitcoin.org/en/developer-guide#initial-block-download\",\"https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\",\"https://en.bitcoin.it/wiki/Chain_Reorganization\",\"https://bitcoin.org/en/developer-guide#full-node\",\"http://statoshi.info/dashboard/db/unspent-transaction-output-set\",\"https://bitcointalk.org/index.php?topic=101734.0\",\"http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\",\"https://petertodd.org/2016/delayed-txo-commitments\",\"https://en.wikipedia.org/wiki/Merkle_tree\",\"https://blockchain.info/charts/utxo-count?timespan=all\",\"https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\",\"http://gavwood.com/paper.pdf\",\"https://cosmos.network/whitepaper\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}jonghun98upvoted (100.00%) @loum / 3y9vyi-utxo-set-sorted-merkle-tree2019/10/22 08:24:21
jonghun98upvoted (100.00%) @loum / 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/22 08:24:21
| voter | jonghun98 |
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| weight | 10000 (100.00%) |
| Transaction Info | Block #37501435/Trx d3270a7ff95b8ab4614c46fbf08fd0d007d440fe |
View Raw JSON Data
{
"trx_id": "d3270a7ff95b8ab4614c46fbf08fd0d007d440fe",
"block": 37501435,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-22T08:24:21",
"op": [
"vote",
{
"voter": "jonghun98",
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"weight": 10000
}
]
}yffupvoted (50.00%) @loum / 3y9vyi-utxo-set-sorted-merkle-tree2019/10/22 08:02:21
yffupvoted (50.00%) @loum / 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/22 08:02:21
| voter | yff |
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| weight | 5000 (50.00%) |
| Transaction Info | Block #37500996/Trx c2fa873b43c3c354b5afdd8aa1690308835efc61 |
View Raw JSON Data
{
"trx_id": "c2fa873b43c3c354b5afdd8aa1690308835efc61",
"block": 37500996,
"trx_in_block": 41,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-22T08:02:21",
"op": [
"vote",
{
"voter": "yff",
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"weight": 5000
}
]
}statsexpertupvoted (100.00%) @loum / 3y9vyi-utxo-set-sorted-merkle-tree2019/10/22 07:55:24
statsexpertupvoted (100.00%) @loum / 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/22 07:55:24
| voter | statsexpert |
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| weight | 10000 (100.00%) |
| Transaction Info | Block #37500857/Trx 63fd927435bedc880f80042e0ce2f4bfccfb2276 |
View Raw JSON Data
{
"trx_id": "63fd927435bedc880f80042e0ce2f4bfccfb2276",
"block": 37500857,
"trx_in_block": 16,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-22T07:55:24",
"op": [
"vote",
{
"voter": "statsexpert",
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"weight": 10000
}
]
}loumpublished a new post: 3y9vyi-utxo-set-sorted-merkle-tree2019/10/22 07:54:51
loumpublished a new post: 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/22 07:54:51
| parent author | |
| parent permlink | bitcoin |
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| title | 비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree) |
| body | @@ -7,16 +7,22 @@ nter%3E%EA%B9%80%EC%84%B1%EC%9D%BC +(Loum) %3C/center |
| json metadata | {"tags":["utxo","set","sorted","merkle","tree"],"image":["https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png","https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png","https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png"],"links":["https://bitcoin.org/bitcoin.pdf","https://en.wikipedia.org/wiki/Bitcoin_Core","https://en.bitcoin.it/wiki/Scalability","https://bitcoin.org/en/developer-guide#block-chain-overview","https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845","https://bitcoin.org/en/developer-guide#initial-block-download","https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning","https://en.bitcoin.it/wiki/Chain_Reorganization","https://bitcoin.org/en/developer-guide#full-node","http://statoshi.info/dashboard/db/unspent-transaction-output-set","https://bitcointalk.org/index.php?topic=101734.0","http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html","https://petertodd.org/2016/delayed-txo-commitments","https://en.wikipedia.org/wiki/Merkle_tree","https://blockchain.info/charts/utxo-count?timespan=all","https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0","http://gavwood.com/paper.pdf","https://cosmos.network/whitepaper"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #37500846/Trx 9665fe7e6631146948cdee3af295f01dc99371b4 |
View Raw JSON Data
{
"trx_id": "9665fe7e6631146948cdee3af295f01dc99371b4",
"block": 37500846,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-22T07:54:51",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "bitcoin",
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"title": "비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree)",
"body": "@@ -7,16 +7,22 @@\n nter%3E%EA%B9%80%EC%84%B1%EC%9D%BC\n+(Loum)\n %3C/center\n",
"json_metadata": "{\"tags\":[\"utxo\",\"set\",\"sorted\",\"merkle\",\"tree\"],\"image\":[\"https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png\",\"https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png\",\"https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png\"],\"links\":[\"https://bitcoin.org/bitcoin.pdf\",\"https://en.wikipedia.org/wiki/Bitcoin_Core\",\"https://en.bitcoin.it/wiki/Scalability\",\"https://bitcoin.org/en/developer-guide#block-chain-overview\",\"https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\",\"https://bitcoin.org/en/developer-guide#initial-block-download\",\"https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\",\"https://en.bitcoin.it/wiki/Chain_Reorganization\",\"https://bitcoin.org/en/developer-guide#full-node\",\"http://statoshi.info/dashboard/db/unspent-transaction-output-set\",\"https://bitcointalk.org/index.php?topic=101734.0\",\"http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\",\"https://petertodd.org/2016/delayed-txo-commitments\",\"https://en.wikipedia.org/wiki/Merkle_tree\",\"https://blockchain.info/charts/utxo-count?timespan=all\",\"https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\",\"http://gavwood.com/paper.pdf\",\"https://cosmos.network/whitepaper\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}loumpublished a new post: 3y9vyi-utxo-set-sorted-merkle-tree2019/10/22 07:51:45
loumpublished a new post: 3y9vyi-utxo-set-sorted-merkle-tree
2019/10/22 07:51:45
| parent author | |
| parent permlink | bitcoin |
| author | loum |
| permlink | 3y9vyi-utxo-set-sorted-merkle-tree |
| title | 비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree) |
| body | <b><center>김성일</center></b> /* 이 글은 2017년 7월 경에 작성했던 것이라서, 일부 내용은는이 날짜를 기준으로 작성되었다 */ Abstract. 비트코인은 다른 노드들을 믿지 못하는 비신뢰 특성 때문에, 새로 블록생성에 참여하는 새 노드는 초기 블록체인 동기화(Initial Blockchain Download, IBD)를 통해 전체 블록체인을 전송받고 이를 검증해야 한다. 하지만, 이 방법은 전체 블록체인 데이터를 다운받아야 하기 때문에 여러 가지 문제를 발생시킨다. 이 논문은 이를 해결하기 위한 방법 중에 새 노드가 전체 블록체인 대신에, 거래의 전체 상태인 UTXO set를 다운로드받는 UTXO 확정(UTXO commitments) 방법을 살펴본다. 하지만 이 방법은 현재 여러 문제로 적용되지 못하고 있다. 이를 해결하기 위해, 우리는 기존 트리를 이용하는 새로운 정렬된 머클트리(sorted merkle tree)를 제안한다. 이것은 UTXO set을 머클트리로 만들 때 기존의 머클트리에 비해 노드의 개수를 약 1/2로 줄일 수 있다. <b>1. 서론</b> 비트코인(Bitcoin)과 같은 블록체인 기술은 신뢰하는 중앙기관이 없이 분산된 다수의 노드들이 피어-투-피어(peer-to-peer, p2p) 네트워크를 구성하여 데이터베이스(DB)인 블록체인을 관리하는 DB 기술이다.[1] 또한 이것은 각 노드들이 동일한 블록체인을 보관하도록 복제하는 복제 시스템(replication system)이다. P2P 네트워크를 구성하는 노드들은 작업증명(proof-of-work, PoW) 또는 지분증명(proof-of-stake, PoS) 합의 알고리즘을 통해서 어느 노드가 새로운 블록을 생성할지를 결정한다. 즉, 비트코인 네트워크에는 합의 알고리즘을 통해 노드들이 하나의 주체인(main chain)을 유지하여 이중지출 방지한다. 따라서 합의 알고리즘이 이중지출(doubling spending)을 막는 핵심적인 역할을 하고, 블록체인 자체는 추가 전용 데이터베이스(append-only database)에 불과하다. 블록체인은 추가 전용 DB이기 때문에, 그 크기가 선형적으로 계속 늘어날 수밖에 없다. 예로, 2017년 5월 20일(이하, ‘현재’라고 칭함)에 비트코인의 블록체인 사이즈는 116 GiB이었고, 최근 1년 동안 블록체인 사이즈는 47 GiB가 증가했다. 현재 비트코인 코어(bitcoin core)에서 블록 사이즈는 1 MiB로 고정되어 있고,[2] 평균적으로 10분에 한 번씩 블록을 생성하므로 1년 동안 추가될 수 있는 블록 사이즈는 1 MiB * 6 * 24 * 365 , 즉52.56 GiB이다. 현재 비트코인 네트워크의 예상 최대 거래 처리량은 초당 7거래로 알려져 있지만[3], 현재 평균적으로 약 3~4 거래를 처리하고 있다. 이에 반해서 비자카드에서 거래의 평균 초당 처리량은 약 2,000 거래이며, 최대(peak) 처리량은 초당 약 56,000 거래로 알려졌다.[3] 따라서 비트코인의 현재 거래 처리량은 매우 작다. 이 때문에, 만일 비트코인의 초당 거래 처리량이 크게 증가한다면, 블록체인의 사이즈 문제는 더욱 심각해질 것이다. 또한 블록체인은 추가 전용 DB이기 때문에 그 크기가 너무 빠르게 증가하는 피할 수 없는 문제를 가진다. <b>2. 비트코인에서 거래 및 거래의 전체 상태</b> 비트코인에서 거래(transaction)는 하나 이상의 입력과 출력(one or more of inputs and outputs)으로 구성된다. 비트코인에서 거래의 출력(outputs)은 단 한 번만 입력(input)에서 소비될 수 있기 때문에, 소비되지 않은 거래 출력(unspent transaction outputs, UTXOs)과 이미 소비된 거래 출력(spent transaction outputs, STXOs)으로 구분된다. 구체적으로, 입력은 소유자가 소비할 수 있는 UTXO와 디지털 서명과 공개키로 구성되고, 출력은 새로운 UTXO를 생성하기 위한 지갑주소와 이체할 코인 개수로 이루어진다. 따라서 거래가 유효하려면, 입력에 STXO가 아닌 UTXO만 사용하여 소비해야 한다.[4] 결국 비트코인에서 거래는 UTXO를 소비하여 STXO로 만들고 새로운 UTXO를 생성하는 과정이다.[4] 비트코인 지갑은 일반적으로 거래의 입력과 출력을 디지털 서명하여 네트워크에 전파한다. 즉 비트코인은 소유권의 증거로 디지털 서명을 제공하는 서명 기반의 소유권 이전 시스템이다. 그림 1은 비트코인의 주요 DB인 맴풀(mempool), 블록체인 그리고 UTXO set을 보여준다. 여기서, 맴풀은 블록에 기록되기를 기다리는 미승인 거래(unconfirmed Tx)를 저장하는 DB이고, 이 때문에 특정 거래가 블록에 기록이 되면 이 거래는 맴풀에서 삭제된다. UTXO set는 미래에 사용할 수 있는 출력인 모든 UTXO를 모아놓은 DB이고, 이 때문에 새 블록이 전파될 때마다 이것의 내용이 바뀐다. 구체적으로, 새 블록이 전파될 때마다 이 블록에 포함된 거래에 의해서 STXO, 즉 소비한 UTXO를 UTXO set에서 제거하고, 새로 발생한 UTXO를 이것에 추가하여 내용을 업데이트한다. 따라서 UTXO set은 전체 계정 상태와 같이 거래의 전체 상태를 관리한다. 여기서 중요한 것은 “공개 블록체인(public blockchain)의 비신뢰 특성 때문에, 분산된 노드들이 블록체인을 통해서 모든 거래를 독립적으로 검증하여 거래의 전체 상태인 UTXO set를 완성하는 것이다.”는 것이다. 따라서 비트코인은 노드 관점에서 블록체인을 복제하여 이를 동기화하고, 이를 통해서 모든 거래를 독립적으로 검증하여 전체 상태인 UTXO 세트를 완성하는 것이다. 이는 비트코인의 비신뢰(trustless) 특성 때문이다. 결국 비트코인의 모든 상태는 UTXO set와 맴풀이 가지고 있다. 이때 UTXO 세트는 전체 상태인 모든 UTXO를 관리하고, 맴풀은 블록체인에 기록되기를 기다리는 모든 미승인 거래(unconfirmed Tx)를 관리한다. <center>https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png</center> <center>그림1. 비트코인의 주요 데이터베이스. 비트코인에서 UTXO set은 거래의 전체 상태를 가진 DB이고, 블록체인은 추가전용의 로그 DB이다. 이 둘은 블록에 포함된 승인된 거래(confirmed Tx)를 관리한다. 맴풀은 블록에 포함되기를 기다리는 미승인 거래들(unconfirmed Tx)을 관리하는 DB이다.</center> 비트코인은 분산된 비신뢰 합의 알고리즘(distributed trustless consensus algorithm)이기 때문에 노드는 다른 노드들을 믿을 수 없다.[5] 이 때문에 노드 자신이 전체 블록체인을 독립적으로 검증해야 한다. 이것은 블록이 디지털 서명이 포함된 거래와 다른 블록과 체인으로 연결되어 있기 때문에 가능한 것이다. 이 때문에, 새 노드가 비트코인 네트워크에 처음 접속하면, 그는 전체 블록체인을 반드시 다운로드 받으며, 이를 초기 블록체인 동기화(Initial Block Download, IBD)라고 부른다[6]. 즉 IBD는 새 노드가 비신뢰 네트워크에서 독립성을 유지하기 위해 블록체인 전체를 다운받아 모든 거래를 검증하고, 이를 통해서 올바른 UTXO 세트를 독립적으로 완성하기 위한 목적으로 사용한다. 참고로, 비트코인 코어(bitcoin core) 0.10.0은 노드가 144개의 블록, 즉 약 24시간 이상 동안 네트워크에 접속하지 못하면, IBD를 다시 시작하여 블록체인을 동기화시킨다[6]. <b>3. 최근의 블록체인만 포함한 부분 삭제 노드(pruned node)</b> 부분 삭제 노드(pruned node)는 전체 블록체인을 저장하지 않는 노드를 말한다.[7] 구체적으로 말하면, 새 노드가 전체 블록체인을 다운받고 이를 검증한 후, UTXO set을 완성한다. 그 후 이 노드는 특정 개수의 최근 블록체인만을 가지고 있고, 그전의 블록체인을 삭제한 부분 삭제 노드(pruned node)가 될 수 있다[7]. 이 노드는 전체 블록체인을 검증하여 거래의 상태인 UTXO set를 완성했기 때문에, 전체 블록체인 대신에 최신의 일부 블록체인만을 저장하고 있어도 올바로 동작한다. 따라서 만일 자신의 노드만 생각한다면, 노드가 일단 UTXO set을 완성한 후에 전체 블록체인을 가지고 있을 필요는 없다. 이 노드는 단지 블록체인에 포크가 발생하였을 경우를 대비하여 최근의 몇 개 블록만 저장해도 된다.[8]. 노드들이 전체 블록체인을 가지고 있는 목적은 새 노드들이 블록생산(채굴)에 참여할 수 있도록 이들에게 전체 블록체인을 제공하는 위한 것이다[9]. <center>https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png</center> <center>그림 2. (a) 전체 헤더부와 거래부를 저장하는 기존 블록체인, (b) 특정 개수의 최근 블록체인을 저장하는 부분 삭제 블록체인(pruned blockchain). 여기서, 부분 삭제 블록체인은 노드가 일정한 개수의 최근 블록을 가지고 있고, 그 이외의 블록은 삭제한다.</center> 그림 2(a)는 전체 블록체인을 가지고 있는 기존 블록체인(conventional blockchain)을 보여준다. 여기서 h와 t는 블록체인의 헤더부(header part)와 거래부(transaction part)를 각각 나타내고, 아래 첨자는 블록의 생성순서를 나타낸다. 기존 블록체인은 그림 2(a)과 같이 최초 블록(genesis block)부터 최근 블록까지 전체 블록체인을 포함한다. 그림에서 화살표는 이전 블록의 블록해시를 현재 블록에 포함시켜서 체인으로 연결시킨 것을 나타낸다. 만일 새 노드가 비트코인 네트워크에 참여한다면, 이 노드는 이 그림 2(a)과 같이 전체 블록체인을 다운로드받기 위해 IBD를 진행해야 한다. 그리고 그림 2(b)는 특정 개수의 최근 블록체인을 저장한 부분 삭제 블록체인(pruned blockchain)을 보여준다. 부분 삭제 노드는 그림 2(b)와 같이 특정 개수의 최신 블록만을 가지고 있다.[7] 그림 2(b)의 경우, 이 노드는 m번째 블록부터 최신 블록인 n번째 블록을 포함하고, n — m은 일정한 상수이다. 노드는 전체 블록체인을 저장하여 검증하고 UTXO set을 완성한 후, 부분 삭제 노드가 될 수 있다. 하지만 이 경우, 이 노드는 새 노드가 네트워크에 참여하도록 전체 블록체인을 제공할 수는 없다. <b>4. 초기 UTXO 다운로드(Initial UTXO Download) 방법</b> 비트코인에서 거래의 전체 상태인 UTXO set은 채굴의 편의를 위해서 메모리에 저장된다. 전체 UTXO set의 크기는 2017년 5월 20일 현재 약 1.9 GiB이었고, 당시 블록체인 크기의 약 1.6%에 불과할 정도로 작다.[10] 블록체인이 거래에 대한 추가전용 DB이기 때문에, 이 비율은 앞으로 점점 작아질 것이다. 이런 이유 때문에, 새 노드가 비트코인 네트워크에 처음 접속하여 IBD를 통해 전체 블록체인을 전송받는 것보다 전체 UTXO set을 전송받는 것이 더 좋은 방법이다. 즉, 만일 새 노드가 초기 동기화 동안 올바른 전체 UTXO set를 이웃 노드로부터 다운받을 수 있다면, 전체 블록체인을 다운받지 않아도 된다. 하지만, 공개 블록체인(public blockchain)에서 노드들은 서로를 믿지 못하는 비신뢰 특성 때문에, 새 노드가 이웃 노드들로부터 UTXO 세트를 직접 다운받는 것은 안전하지 않다. 왜냐하면, 새 노드가 다운로드 받은 UTXO set이 올바른 것인지를 판단할 수 없기 때문이다. 이를 해결하기 위해서, UTXO 확정 (UTXO commitments) 방법이 이미 제안되었고, 이를 경량 지갑(light wallet)에 적용하려는 여러 가지 제안들이 있었다.[11–13] 이것은 전체 UTXO set를 머클트리(merkle tree)로 구성하고, 이것의 루트 해시를 블록에 기록하는 방법이다. 그리고 새 노드는 전체 UTXO set을 전송받고 이를 머클트리로 구성하여 이것의 루트 해시를 구하고 블록에 기록된 루트해시를 비교하여 안전성을 검증한다. 즉 UTXO 확정은 p2p 네트워크에서 다른 노드로부터 전파 받은 UTXO set이 올바른지를 확인하는 데 사용할 수 있다. 이것을 초기 UTXO 동기화(initial UTXO download, IUD)라 부르자. IUD의 장점은 다음과 같다. 1) IUD는 기존의 IBD를 통해 전체 블록체인을 다운받는 방법보다 전송받는 데이터가 매우 작다. 이 때문에 새 노드가 매우 빨리 초기 동기화를 시킬 수 있다. 2) 기존의 IBD는 서명의 검증에 많은 CPU 자원이 필요하다. 하지만, IUD는 모든 블록을 검증하는 대신에, 전체 UTXO set을 검증하기 때문에 검증을 위한 계산량 및 시간을 크게 줄일 수 있다. 그렇지만 IUD는 노드의 독립성을 일부 포기한 것으로 보일 수 있다. 왜냐하면 기존의 IBD는 비신뢰 특성 때문에 새 노드가 전체 블록체인을 전송받아 이것에 포함된 모든 거래를 독립적으로 검증하기 때문이다. 하지만 비트코인에서 IUD가 안전한 이유는 공격자가 최근의 블록체인을 새로 만들 때 상당한 비용이 들기 때문이다. 즉, 새 노드가 IUD를 통해 UTXO set를 전송받은 후, 그가 몇 개의 최신 블록을 연속으로 검증하면 안전한 UTXO 세트를 전송받았는지 쉽게 검증할 수 있다. 그리고 비트코인 지갑은 거래가 포함된 블록 이후 6개의 새 블록이 생성되면 이체가 가능하다. 이와 유사하게, 예로 들면, 새 노드는 IUD 동안 먼저 최신 블록과 UTXO set을 전송받고 이를 검증한 후, 연속으로 5개의 새로운 블록을 전파 받아서 이 UTXO set를 계속 검증한다. 이 과정을 모두 통과할 경우 새 노드는 이 UTXO set을 사용할 수 있다. 블록에 UTXO set의 루트 해시를 기록하는 방법은 아래와 같을 수 있다. 예를 들면, 노드들은 기존 방법대로 난이도 조건을 만족하는 블록해시를 먼저 찾은 후에, UTXO set의 머클트리를 구성하여 그것의 루트 해시를 계산한다. 그리고 기존 블록과 동일하게 블록을 만들고, 추가로 머클트리의 루트 해시를 블록에 기록한다. 또한 이 루트 해시와 블록해시로 새로운 해시를 만들어 이를 블록에 추가할 수 있다. <b>5. 기존 트리의 정렬을 이용한 정렬된 머클트리(sorted merkle tree)</b> 그림 3(a)에 보인 기존 머클트리를 먼저 살펴보자. 이 그림의 기존 머클트리는 이진트리(binary tree)이고, 데이터인 UTXO가 모두 말단 노드(leaf nodes)에 위치한다. 그리고 이것의 내부노드(interior nodes)는 두 자식 노드를 연결하여 계산한 해시로 구성하고 루트 해시와 연결된다.[14] 그림 3에서 u와 h는 각각 UTXO와 해시(hash)를 나타내고, 아래첨자는 이들의 이름을 가리킨다. 내부노드의 해시를 구하는 예를 들면, 2번 노드의 해시는 h2 = hf(h4 || h5)로 계산한다. 이때, hf는 해시함수이고, ||는 연결(concatenation) 연산자이다. 따라서 기존 머클트리에서 루트 노드의 루트 해시(h1)는 단말노드에 위치한 데이터인 모든 UTXO에 의존하게 된다. 이 때문에, 만일 데이터가 하나라도 바뀌면, 해당 노드로부터 루트 노드로 이어지는 노드들의 해시가 바뀌고 결국 루트 해시(h1)가 바뀐다. <center>https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png</center> <center>그림 3. (a) 기존 머클트리. 머클트리는 말단 노드에 모든 UTXO가 위치하고, 내부 노드는 두 개의 자식 노드의 해시로 구성된 이진트리이다. (b) 우리가 제안한 머클트리. 머클트리는 모든 UTXO를 기존의 이진트리로 정렬하고, 그 후에 노드의 해시를 구한다. 이때, 내부 노드는 해시를 포함한다. 이 경우, 내부노드에 UTXO를 포함하기 때문에 머클트리의 노드의 개수는 기존 머클트리 대비 약 1/2로 작아진다.</center> 2017년 5월 20일 현재 UTXO set의 크기는 약 1.9 GiB이고, 이것은 약 5천4백만 개의 UTXO를 포함한다.[15] 이것은 앞으로 더 증가할 수밖에 없다. 그리고 전체 UTXO set를 머클트리로 구성하고 이것의 루트 해시를 구하는 것은 많은 해시 계산이 필요하다. 하지만 비트코인에서 새 블록이 생성될 때마다, UTXO set에 새로 생성된 UTXO를 삽입하고 소비한 UTXO를 삭제한다. 새 블록마다, UTXO set의 머클트리를 업데이트하고 내부노드의 해시를 다시 계산하는 것은 너무 많은 해시 계산이 발생하는 등의 문제가 있었다. 이런 이유로 아직까지 비트코인에 IUD를 적용하지 못하고 있다[13]. 더불어 기존 머클트리는 모든 데이터, 즉 전체 UTXO가 단말 노드에 위치하기 때문에, UTXO가 정렬되어 있지 않는다. 이 때문에, 기존 머클트리는 특정 데이터의 비존재 증명에 이용할 수 없었다.[16] 이를 해결하기 위해, 우리는 기존 이진트리를 이용한 정렬된 머클트리(sorted merkle tree)를 제안한다. 그림 1(b)는 우리가 제안한 새로운 머클트리를 보여준다. 이 머클트리는 기존의 이진트리를 이용하여 데이터인 UTXO를 모든 노드에 정렬시키고, 그 후에 내부노드의 해시를 계산한다. 이 때문에, 우리가 제안한 머클트리는 AVL 트리 또는 레드-블랙 트리(red-black tree) 등과 같은 시간 복잡도가 O(log n)인 균형 이진트리(balanced binary tree) 등을 사용할 수 있다. 구체적으로, 우리가 제안한 머클트리는 새 블록이 생성될 때마다 먼저 기존 UTXO의 이진트리에 사용된 UTXO 및 새로 생성된 UTXO를 삭제 및 삽입하고, 그 후에 해당하는 노드의 해시를 부가적으로 계산한다. 구체적으로, 그림 3(b)에서 말단노드의 해시는 h2와 h3이고, 이들은 hself = hf(uleft || uright || uself)로 구한다. 예를 들면, 2번 노드의 해시(h2)는 u4, u5와 u2를 연결하여 구한다. 그리고 만일 자식 노드에 해시가 존재할 경우, 이 노드의 해시는 자식노드의 해시와 자신의 UTXO를 연결하여 구한다. 예를 들면, 루트 해시(h1)는 h2, h3와 u1을 연결하여 구한다. 이 머클트리의 장점은 다음과 같다. 첫 번째, 이것은 내부노드에 데이터를 저장하고 있기 때문에 기존 머클트리에 비해서 이진트리의 노드 개수를 약 1/2로 줄인다. 이 때문에 기존 머클트리에 비해 해시의 개수가 약 절반으로 줄어든다. 즉 데이터의 업데이트 시에 해시 계산의 개수가 줄어든다. 두 번째, 제안한 머클트리는 기존 이진트리로 데이터인 UTXO를 먼저 정렬하고, 이 때문에 이것은 특정 UTXO의 존재 여부를 쉽게 증명할 수 있다. 따라서 경량 지갑에서 특정 거래의 존재 여부에 대한 검증이 가능하다. 우리의 머클트리에서 데이터의 비존재 증명은 비존재하는 데이터의 양 옆에 있는 데이터가 바로 이웃하고 있는지를 증명하면 가능하다. [16] 참고로, 경량지갑에서 거래의 존재 증명은 아래와 같이 확인할 수 있다. 예를 들면, 그림 3(b)의 제안한 머클트리에서 u2의 검증은 u4, u5, u2, h3가 필요하다. 이에 비해 그림 3(a)의 기존 머클트리에서 u2의 검증은 u1, u2, h5, h3가 필요하다. 더불어, 기존 머클트리는 각 데이터, 즉 UTXO를 검증할 때, 단 하나의 이웃 데이터를 포함한다. 하지만 우리가 제안한 머클트리는 내부 노드에 데이터를 포함하기 때문에 각 데이터를 검증할 때, 기존 머클트리에 비해서 더 많은 데이터를 포함해야 한다. 하지만, 비트코인은 공개 블록체인이므로, 특정 거래의 검증 과정에서 특정 utxo를 노출하는 것은 전혀 문제가 되지 않는다. 그리고 이더리움은 UTXO 대신에 계정(accounts)을 가지고 있고, 머클 페트리샤 트리(merkle patricia tree)에 저장한다.[17] 비슷하게 코스모스 코인도 계정을 가지고 있고, 이를 머클 IAVL+ 트리(merkle IAVL+ tree)에 저장된다.[18] 하지만, 이들도 모두 단말노드에 계정 데이터를 저장한다. 따라서 이더리움과 같이 계정의 전체 상태를 가진 암호화폐에도 우리가 제안한 정렬된 머클트리 구조를 적용할 수 있다. <b>6. 결론</b> 본 논문은 비트코인에서 초기 동기화 시에 UTXO 확정(commitments)을 이용하기 위해, 머클트리의 노드의 개수를 약 1/2로 줄인 정렬된 머클트리(sorted merkle tree)를 제안한다. 이 머클트리를 사용하면, 매 블록마다 삭제 및 추가되는 UTXO에 때문에 발생하는 머클트리에서 변화된 전체 해시 계산 개수를 줄일 수 있다. 이 때문에 전체 블록체인을 다운받는 초기 블록 다운로드(IBD) 대신에, UTXO set을 다운로드받는 초기 UTXO 다운로드(IUD)를 사용할 수 있을 것으로 추측한다. 결론적으로 우리는 IUD를 사용할 수 있도록, 머클트리에서 노드의 개수를 기존 머클트리에 비해서 약 1/2로 줄인 새로운 머클트리 구조를 제안한다. <b>References</b> [1] Satoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System.” https://bitcoin.org/bitcoin.pdf (2009) [2] No Auther, “Bitcoin Core.” https://en.wikipedia.org/wiki/Bitcoin_Core (accessed 3 April 2018) [3] No Auther, “Scalability.” Bitcoin Wikipedia https://en.bitcoin.it/wiki/Scalability (accessed 3 April 2018) [4] No Auther, “Block Chain Overview.” https://bitcoin.org/en/developer-guide#block-chain-overview [5] Aleksandr Bulkin, “Explaining blockchain — how proof of work enables trustless consensus.” https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845 [6] No Auther, “Initial Block Download.” https://bitcoin.org/en/developer-guide#initial-block-download [7] No Auther, “Block file pruning.” https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning [8] No Auther, ”Chain Reorganization.” https://en.bitcoin.it/wiki/Chain_Reorganization [9] No Auther, “Full Node.” https://bitcoin.org/en/developer-guide#full-node [10] No Auther. “Unspent transaction output set.” Statoshi.info http://statoshi.info/dashboard/db/unspent-transaction-output-set (accessed 5 April 2017) [11] Andrew Miller. “Storing UTXOs in a Balanced Merkle Tree.” Bitcointalk https://bitcointalk.org/index.php?topic=101734.0 [12] No Auther. “Pettycoin Revisted Part I: Utxo Commitments.” http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html [13] Peter Todd. “Making UTXO Set Growth Irrelevant With Low-Latency Delayed TXO Commitments.” https://petertodd.org/2016/delayed-txo-commitments [14] No Auther. “Merkle tree.” https://en.wikipedia.org/wiki/Merkle_tree [15] No Auther. “Number of Unspent Transaction Outputs.” https://blockchain.info/charts/utxo-count?timespan=all [16] No Auther. “sorted-merkle-tree-issue693.” https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0 [17] Gavin Wood. “Ethereum: A secure decentralized generalized transaction ledger” No Publisher (2014) http://gavwood.com/paper.pdf [18] Jae Kwon and Ethan Buchman. “Cosmos whitepaper.” Cosmos https://cosmos.network/whitepaper (accessed 3 April 2018) |
| json metadata | {"tags":["bitcoin","utxo","set","sorted","merkle","tree"],"image":["https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png","https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png","https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png"],"links":["https://bitcoin.org/bitcoin.pdf","https://en.wikipedia.org/wiki/Bitcoin_Core","https://en.bitcoin.it/wiki/Scalability","https://bitcoin.org/en/developer-guide#block-chain-overview","https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845","https://bitcoin.org/en/developer-guide#initial-block-download","https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning","https://en.bitcoin.it/wiki/Chain_Reorganization","https://bitcoin.org/en/developer-guide#full-node","http://statoshi.info/dashboard/db/unspent-transaction-output-set","https://bitcointalk.org/index.php?topic=101734.0","http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html","https://petertodd.org/2016/delayed-txo-commitments","https://en.wikipedia.org/wiki/Merkle_tree","https://blockchain.info/charts/utxo-count?timespan=all","https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0","http://gavwood.com/paper.pdf","https://cosmos.network/whitepaper"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #37500784/Trx 20391e913c565b3f40fcb64cd9280140015bdd64 |
View Raw JSON Data
{
"trx_id": "20391e913c565b3f40fcb64cd9280140015bdd64",
"block": 37500784,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-22T07:51:45",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "bitcoin",
"author": "loum",
"permlink": "3y9vyi-utxo-set-sorted-merkle-tree",
"title": "비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree)",
"body": "<b><center>김성일</center></b>\n\n/* 이 글은 2017년 7월 경에 작성했던 것이라서, 일부 내용은는이 날짜를 기준으로 작성되었다 */\n\nAbstract. 비트코인은 다른 노드들을 믿지 못하는 비신뢰 특성 때문에, 새로 블록생성에 참여하는 새 노드는 초기 블록체인 동기화(Initial Blockchain Download, IBD)를 통해 전체 블록체인을 전송받고 이를 검증해야 한다. 하지만, 이 방법은 전체 블록체인 데이터를 다운받아야 하기 때문에 여러 가지 문제를 발생시킨다. 이 논문은 이를 해결하기 위한 방법 중에 새 노드가 전체 블록체인 대신에, 거래의 전체 상태인 UTXO set를 다운로드받는 UTXO 확정(UTXO commitments) 방법을 살펴본다. 하지만 이 방법은 현재 여러 문제로 적용되지 못하고 있다. 이를 해결하기 위해, 우리는 기존 트리를 이용하는 새로운 정렬된 머클트리(sorted merkle tree)를 제안한다. 이것은 UTXO set을 머클트리로 만들 때 기존의 머클트리에 비해 노드의 개수를 약 1/2로 줄일 수 있다.\n\n\n<b>1. 서론</b>\n비트코인(Bitcoin)과 같은 블록체인 기술은 신뢰하는 중앙기관이 없이 분산된 다수의 노드들이 피어-투-피어(peer-to-peer, p2p) 네트워크를 구성하여 데이터베이스(DB)인 블록체인을 관리하는 DB 기술이다.[1] 또한 이것은 각 노드들이 동일한 블록체인을 보관하도록 복제하는 복제 시스템(replication system)이다. P2P 네트워크를 구성하는 노드들은 작업증명(proof-of-work, PoW) 또는 지분증명(proof-of-stake, PoS) 합의 알고리즘을 통해서 어느 노드가 새로운 블록을 생성할지를 결정한다. 즉, 비트코인 네트워크에는 합의 알고리즘을 통해 노드들이 하나의 주체인(main chain)을 유지하여 이중지출 방지한다. 따라서 합의 알고리즘이 이중지출(doubling spending)을 막는 핵심적인 역할을 하고, 블록체인 자체는 추가 전용 데이터베이스(append-only database)에 불과하다.\n\n블록체인은 추가 전용 DB이기 때문에, 그 크기가 선형적으로 계속 늘어날 수밖에 없다. 예로, 2017년 5월 20일(이하, ‘현재’라고 칭함)에 비트코인의 블록체인 사이즈는 116 GiB이었고, 최근 1년 동안 블록체인 사이즈는 47 GiB가 증가했다. 현재 비트코인 코어(bitcoin core)에서 블록 사이즈는 1 MiB로 고정되어 있고,[2] 평균적으로 10분에 한 번씩 블록을 생성하므로 1년 동안 추가될 수 있는 블록 사이즈는 1 MiB * 6 * 24 * 365 , 즉52.56 GiB이다. 현재 비트코인 네트워크의 예상 최대 거래 처리량은 초당 7거래로 알려져 있지만[3], 현재 평균적으로 약 3~4 거래를 처리하고 있다. 이에 반해서 비자카드에서 거래의 평균 초당 처리량은 약 2,000 거래이며, 최대(peak) 처리량은 초당 약 56,000 거래로 알려졌다.[3] 따라서 비트코인의 현재 거래 처리량은 매우 작다. 이 때문에, 만일 비트코인의 초당 거래 처리량이 크게 증가한다면, 블록체인의 사이즈 문제는 더욱 심각해질 것이다. 또한 블록체인은 추가 전용 DB이기 때문에 그 크기가 너무 빠르게 증가하는 피할 수 없는 문제를 가진다.\n\n<b>2. 비트코인에서 거래 및 거래의 전체 상태</b>\n비트코인에서 거래(transaction)는 하나 이상의 입력과 출력(one or more of inputs and outputs)으로 구성된다. 비트코인에서 거래의 출력(outputs)은 단 한 번만 입력(input)에서 소비될 수 있기 때문에, 소비되지 않은 거래 출력(unspent transaction outputs, UTXOs)과 이미 소비된 거래 출력(spent transaction outputs, STXOs)으로 구분된다. 구체적으로, 입력은 소유자가 소비할 수 있는 UTXO와 디지털 서명과 공개키로 구성되고, 출력은 새로운 UTXO를 생성하기 위한 지갑주소와 이체할 코인 개수로 이루어진다. 따라서 거래가 유효하려면, 입력에 STXO가 아닌 UTXO만 사용하여 소비해야 한다.[4] 결국 비트코인에서 거래는 UTXO를 소비하여 STXO로 만들고 새로운 UTXO를 생성하는 과정이다.[4] 비트코인 지갑은 일반적으로 거래의 입력과 출력을 디지털 서명하여 네트워크에 전파한다. 즉 비트코인은 소유권의 증거로 디지털 서명을 제공하는 서명 기반의 소유권 이전 시스템이다.\n\n그림 1은 비트코인의 주요 DB인 맴풀(mempool), 블록체인 그리고 UTXO set을 보여준다. 여기서, 맴풀은 블록에 기록되기를 기다리는 미승인 거래(unconfirmed Tx)를 저장하는 DB이고, 이 때문에 특정 거래가 블록에 기록이 되면 이 거래는 맴풀에서 삭제된다. UTXO set는 미래에 사용할 수 있는 출력인 모든 UTXO를 모아놓은 DB이고, 이 때문에 새 블록이 전파될 때마다 이것의 내용이 바뀐다. 구체적으로, 새 블록이 전파될 때마다 이 블록에 포함된 거래에 의해서 STXO, 즉 소비한 UTXO를 UTXO set에서 제거하고, 새로 발생한 UTXO를 이것에 추가하여 내용을 업데이트한다. 따라서 UTXO set은 전체 계정 상태와 같이 거래의 전체 상태를 관리한다. 여기서 중요한 것은 “공개 블록체인(public blockchain)의 비신뢰 특성 때문에, 분산된 노드들이 블록체인을 통해서 모든 거래를 독립적으로 검증하여 거래의 전체 상태인 UTXO set를 완성하는 것이다.”는 것이다. 따라서 비트코인은 노드 관점에서 블록체인을 복제하여 이를 동기화하고, 이를 통해서 모든 거래를 독립적으로 검증하여 전체 상태인 UTXO 세트를 완성하는 것이다. 이는 비트코인의 비신뢰(trustless) 특성 때문이다. 결국 비트코인의 모든 상태는 UTXO set와 맴풀이 가지고 있다. 이때 UTXO 세트는 전체 상태인 모든 UTXO를 관리하고, 맴풀은 블록체인에 기록되기를 기다리는 모든 미승인 거래(unconfirmed Tx)를 관리한다.\n\n<center>https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png</center>\n<center>그림1. 비트코인의 주요 데이터베이스. 비트코인에서 UTXO set은 거래의 전체 상태를 가진 DB이고, 블록체인은 추가전용의 로그 DB이다. 이 둘은 블록에 포함된 승인된 거래(confirmed Tx)를 관리한다. 맴풀은 블록에 포함되기를 기다리는 미승인 거래들(unconfirmed Tx)을 관리하는 DB이다.</center>\n\n비트코인은 분산된 비신뢰 합의 알고리즘(distributed trustless consensus algorithm)이기 때문에 노드는 다른 노드들을 믿을 수 없다.[5] 이 때문에 노드 자신이 전체 블록체인을 독립적으로 검증해야 한다. 이것은 블록이 디지털 서명이 포함된 거래와 다른 블록과 체인으로 연결되어 있기 때문에 가능한 것이다. 이 때문에, 새 노드가 비트코인 네트워크에 처음 접속하면, 그는 전체 블록체인을 반드시 다운로드 받으며, 이를 초기 블록체인 동기화(Initial Block Download, IBD)라고 부른다[6]. 즉 IBD는 새 노드가 비신뢰 네트워크에서 독립성을 유지하기 위해 블록체인 전체를 다운받아 모든 거래를 검증하고, 이를 통해서 올바른 UTXO 세트를 독립적으로 완성하기 위한 목적으로 사용한다. 참고로, 비트코인 코어(bitcoin core) 0.10.0은 노드가 144개의 블록, 즉 약 24시간 이상 동안 네트워크에 접속하지 못하면, IBD를 다시 시작하여 블록체인을 동기화시킨다[6].\n\n<b>3. 최근의 블록체인만 포함한 부분 삭제 노드(pruned node)</b>\n부분 삭제 노드(pruned node)는 전체 블록체인을 저장하지 않는 노드를 말한다.[7] 구체적으로 말하면, 새 노드가 전체 블록체인을 다운받고 이를 검증한 후, UTXO set을 완성한다. 그 후 이 노드는 특정 개수의 최근 블록체인만을 가지고 있고, 그전의 블록체인을 삭제한 부분 삭제 노드(pruned node)가 될 수 있다[7]. 이 노드는 전체 블록체인을 검증하여 거래의 상태인 UTXO set를 완성했기 때문에, 전체 블록체인 대신에 최신의 일부 블록체인만을 저장하고 있어도 올바로 동작한다. 따라서 만일 자신의 노드만 생각한다면, 노드가 일단 UTXO set을 완성한 후에 전체 블록체인을 가지고 있을 필요는 없다. 이 노드는 단지 블록체인에 포크가 발생하였을 경우를 대비하여 최근의 몇 개 블록만 저장해도 된다.[8]. 노드들이 전체 블록체인을 가지고 있는 목적은 새 노드들이 블록생산(채굴)에 참여할 수 있도록 이들에게 전체 블록체인을 제공하는 위한 것이다[9].\n\n<center>https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png</center>\n<center>그림 2. (a) 전체 헤더부와 거래부를 저장하는 기존 블록체인, (b) 특정 개수의 최근 블록체인을 저장하는 부분 삭제 블록체인(pruned blockchain). 여기서, 부분 삭제 블록체인은 노드가 일정한 개수의 최근 블록을 가지고 있고, 그 이외의 블록은 삭제한다.</center>\n\n그림 2(a)는 전체 블록체인을 가지고 있는 기존 블록체인(conventional blockchain)을 보여준다. 여기서 h와 t는 블록체인의 헤더부(header part)와 거래부(transaction part)를 각각 나타내고, 아래 첨자는 블록의 생성순서를 나타낸다. 기존 블록체인은 그림 2(a)과 같이 최초 블록(genesis block)부터 최근 블록까지 전체 블록체인을 포함한다. 그림에서 화살표는 이전 블록의 블록해시를 현재 블록에 포함시켜서 체인으로 연결시킨 것을 나타낸다. 만일 새 노드가 비트코인 네트워크에 참여한다면, 이 노드는 이 그림 2(a)과 같이 전체 블록체인을 다운로드받기 위해 IBD를 진행해야 한다. 그리고 그림 2(b)는 특정 개수의 최근 블록체인을 저장한 부분 삭제 블록체인(pruned blockchain)을 보여준다. 부분 삭제 노드는 그림 2(b)와 같이 특정 개수의 최신 블록만을 가지고 있다.[7] 그림 2(b)의 경우, 이 노드는 m번째 블록부터 최신 블록인 n번째 블록을 포함하고, n — m은 일정한 상수이다. 노드는 전체 블록체인을 저장하여 검증하고 UTXO set을 완성한 후, 부분 삭제 노드가 될 수 있다. 하지만 이 경우, 이 노드는 새 노드가 네트워크에 참여하도록 전체 블록체인을 제공할 수는 없다.\n\n<b>4. 초기 UTXO 다운로드(Initial UTXO Download) 방법</b>\n비트코인에서 거래의 전체 상태인 UTXO set은 채굴의 편의를 위해서 메모리에 저장된다. 전체 UTXO set의 크기는 2017년 5월 20일 현재 약 1.9 GiB이었고, 당시 블록체인 크기의 약 1.6%에 불과할 정도로 작다.[10] 블록체인이 거래에 대한 추가전용 DB이기 때문에, 이 비율은 앞으로 점점 작아질 것이다. 이런 이유 때문에, 새 노드가 비트코인 네트워크에 처음 접속하여 IBD를 통해 전체 블록체인을 전송받는 것보다 전체 UTXO set을 전송받는 것이 더 좋은 방법이다. 즉, 만일 새 노드가 초기 동기화 동안 올바른 전체 UTXO set를 이웃 노드로부터 다운받을 수 있다면, 전체 블록체인을 다운받지 않아도 된다. 하지만, 공개 블록체인(public blockchain)에서 노드들은 서로를 믿지 못하는 비신뢰 특성 때문에, 새 노드가 이웃 노드들로부터 UTXO 세트를 직접 다운받는 것은 안전하지 않다. 왜냐하면, 새 노드가 다운로드 받은 UTXO set이 올바른 것인지를 판단할 수 없기 때문이다.\n\n이를 해결하기 위해서, UTXO 확정 (UTXO commitments) 방법이 이미 제안되었고, 이를 경량 지갑(light wallet)에 적용하려는 여러 가지 제안들이 있었다.[11–13] 이것은 전체 UTXO set를 머클트리(merkle tree)로 구성하고, 이것의 루트 해시를 블록에 기록하는 방법이다. 그리고 새 노드는 전체 UTXO set을 전송받고 이를 머클트리로 구성하여 이것의 루트 해시를 구하고 블록에 기록된 루트해시를 비교하여 안전성을 검증한다. 즉 UTXO 확정은 p2p 네트워크에서 다른 노드로부터 전파 받은 UTXO set이 올바른지를 확인하는 데 사용할 수 있다. 이것을 초기 UTXO 동기화(initial UTXO download, IUD)라 부르자. IUD의 장점은 다음과 같다. 1) IUD는 기존의 IBD를 통해 전체 블록체인을 다운받는 방법보다 전송받는 데이터가 매우 작다. 이 때문에 새 노드가 매우 빨리 초기 동기화를 시킬 수 있다. 2) 기존의 IBD는 서명의 검증에 많은 CPU 자원이 필요하다. 하지만, IUD는 모든 블록을 검증하는 대신에, 전체 UTXO set을 검증하기 때문에 검증을 위한 계산량 및 시간을 크게 줄일 수 있다.\n\n그렇지만 IUD는 노드의 독립성을 일부 포기한 것으로 보일 수 있다. 왜냐하면 기존의 IBD는 비신뢰 특성 때문에 새 노드가 전체 블록체인을 전송받아 이것에 포함된 모든 거래를 독립적으로 검증하기 때문이다. 하지만 비트코인에서 IUD가 안전한 이유는 공격자가 최근의 블록체인을 새로 만들 때 상당한 비용이 들기 때문이다. 즉, 새 노드가 IUD를 통해 UTXO set를 전송받은 후, 그가 몇 개의 최신 블록을 연속으로 검증하면 안전한 UTXO 세트를 전송받았는지 쉽게 검증할 수 있다. 그리고 비트코인 지갑은 거래가 포함된 블록 이후 6개의 새 블록이 생성되면 이체가 가능하다. 이와 유사하게, 예로 들면, 새 노드는 IUD 동안 먼저 최신 블록과 UTXO set을 전송받고 이를 검증한 후, 연속으로 5개의 새로운 블록을 전파 받아서 이 UTXO set를 계속 검증한다. 이 과정을 모두 통과할 경우 새 노드는 이 UTXO set을 사용할 수 있다.\n\n블록에 UTXO set의 루트 해시를 기록하는 방법은 아래와 같을 수 있다. 예를 들면, 노드들은 기존 방법대로 난이도 조건을 만족하는 블록해시를 먼저 찾은 후에, UTXO set의 머클트리를 구성하여 그것의 루트 해시를 계산한다. 그리고 기존 블록과 동일하게 블록을 만들고, 추가로 머클트리의 루트 해시를 블록에 기록한다. 또한 이 루트 해시와 블록해시로 새로운 해시를 만들어 이를 블록에 추가할 수 있다.\n\n<b>5. 기존 트리의 정렬을 이용한 정렬된 머클트리(sorted merkle tree)</b>\n그림 3(a)에 보인 기존 머클트리를 먼저 살펴보자. 이 그림의 기존 머클트리는 이진트리(binary tree)이고, 데이터인 UTXO가 모두 말단 노드(leaf nodes)에 위치한다. 그리고 이것의 내부노드(interior nodes)는 두 자식 노드를 연결하여 계산한 해시로 구성하고 루트 해시와 연결된다.[14] 그림 3에서 u와 h는 각각 UTXO와 해시(hash)를 나타내고, 아래첨자는 이들의 이름을 가리킨다. 내부노드의 해시를 구하는 예를 들면, 2번 노드의 해시는 h2 = hf(h4 || h5)로 계산한다. 이때, hf는 해시함수이고, ||는 연결(concatenation) 연산자이다. 따라서 기존 머클트리에서 루트 노드의 루트 해시(h1)는 단말노드에 위치한 데이터인 모든 UTXO에 의존하게 된다. 이 때문에, 만일 데이터가 하나라도 바뀌면, 해당 노드로부터 루트 노드로 이어지는 노드들의 해시가 바뀌고 결국 루트 해시(h1)가 바뀐다.\n\n<center>https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png</center>\n<center>그림 3. (a) 기존 머클트리. 머클트리는 말단 노드에 모든 UTXO가 위치하고, 내부 노드는 두 개의 자식 노드의 해시로 구성된 이진트리이다. (b) 우리가 제안한 머클트리. 머클트리는 모든 UTXO를 기존의 이진트리로 정렬하고, 그 후에 노드의 해시를 구한다. 이때, 내부 노드는 해시를 포함한다. 이 경우, 내부노드에 UTXO를 포함하기 때문에 머클트리의 노드의 개수는 기존 머클트리 대비 약 1/2로 작아진다.</center>\n\n2017년 5월 20일 현재 UTXO set의 크기는 약 1.9 GiB이고, 이것은 약 5천4백만 개의 UTXO를 포함한다.[15] 이것은 앞으로 더 증가할 수밖에 없다. 그리고 전체 UTXO set를 머클트리로 구성하고 이것의 루트 해시를 구하는 것은 많은 해시 계산이 필요하다. 하지만 비트코인에서 새 블록이 생성될 때마다, UTXO set에 새로 생성된 UTXO를 삽입하고 소비한 UTXO를 삭제한다. 새 블록마다, UTXO set의 머클트리를 업데이트하고 내부노드의 해시를 다시 계산하는 것은 너무 많은 해시 계산이 발생하는 등의 문제가 있었다. 이런 이유로 아직까지 비트코인에 IUD를 적용하지 못하고 있다[13]. 더불어 기존 머클트리는 모든 데이터, 즉 전체 UTXO가 단말 노드에 위치하기 때문에, UTXO가 정렬되어 있지 않는다. 이 때문에, 기존 머클트리는 특정 데이터의 비존재 증명에 이용할 수 없었다.[16]\n\n이를 해결하기 위해, 우리는 기존 이진트리를 이용한 정렬된 머클트리(sorted merkle tree)를 제안한다. 그림 1(b)는 우리가 제안한 새로운 머클트리를 보여준다. 이 머클트리는 기존의 이진트리를 이용하여 데이터인 UTXO를 모든 노드에 정렬시키고, 그 후에 내부노드의 해시를 계산한다. 이 때문에, 우리가 제안한 머클트리는 AVL 트리 또는 레드-블랙 트리(red-black tree) 등과 같은 시간 복잡도가 O(log n)인 균형 이진트리(balanced binary tree) 등을 사용할 수 있다. 구체적으로, 우리가 제안한 머클트리는 새 블록이 생성될 때마다 먼저 기존 UTXO의 이진트리에 사용된 UTXO 및 새로 생성된 UTXO를 삭제 및 삽입하고, 그 후에 해당하는 노드의 해시를 부가적으로 계산한다. 구체적으로, 그림 3(b)에서 말단노드의 해시는 h2와 h3이고, 이들은 hself = hf(uleft || uright || uself)로 구한다. 예를 들면, 2번 노드의 해시(h2)는 u4, u5와 u2를 연결하여 구한다. 그리고 만일 자식 노드에 해시가 존재할 경우, 이 노드의 해시는 자식노드의 해시와 자신의 UTXO를 연결하여 구한다. 예를 들면, 루트 해시(h1)는 h2, h3와 u1을 연결하여 구한다. 이 머클트리의 장점은 다음과 같다. 첫 번째, 이것은 내부노드에 데이터를 저장하고 있기 때문에 기존 머클트리에 비해서 이진트리의 노드 개수를 약 1/2로 줄인다. 이 때문에 기존 머클트리에 비해 해시의 개수가 약 절반으로 줄어든다. 즉 데이터의 업데이트 시에 해시 계산의 개수가 줄어든다. 두 번째, 제안한 머클트리는 기존 이진트리로 데이터인 UTXO를 먼저 정렬하고, 이 때문에 이것은 특정 UTXO의 존재 여부를 쉽게 증명할 수 있다. 따라서 경량 지갑에서 특정 거래의 존재 여부에 대한 검증이 가능하다. 우리의 머클트리에서 데이터의 비존재 증명은 비존재하는 데이터의 양 옆에 있는 데이터가 바로 이웃하고 있는지를 증명하면 가능하다. [16] 참고로, 경량지갑에서 거래의 존재 증명은 아래와 같이 확인할 수 있다. 예를 들면, 그림 3(b)의 제안한 머클트리에서 u2의 검증은 u4, u5, u2, h3가 필요하다. 이에 비해 그림 3(a)의 기존 머클트리에서 u2의 검증은 u1, u2, h5, h3가 필요하다.\n\n더불어, 기존 머클트리는 각 데이터, 즉 UTXO를 검증할 때, 단 하나의 이웃 데이터를 포함한다. 하지만 우리가 제안한 머클트리는 내부 노드에 데이터를 포함하기 때문에 각 데이터를 검증할 때, 기존 머클트리에 비해서 더 많은 데이터를 포함해야 한다. 하지만, 비트코인은 공개 블록체인이므로, 특정 거래의 검증 과정에서 특정 utxo를 노출하는 것은 전혀 문제가 되지 않는다.\n\n그리고 이더리움은 UTXO 대신에 계정(accounts)을 가지고 있고, 머클 페트리샤 트리(merkle patricia tree)에 저장한다.[17] 비슷하게 코스모스 코인도 계정을 가지고 있고, 이를 머클 IAVL+ 트리(merkle IAVL+ tree)에 저장된다.[18] 하지만, 이들도 모두 단말노드에 계정 데이터를 저장한다. 따라서 이더리움과 같이 계정의 전체 상태를 가진 암호화폐에도 우리가 제안한 정렬된 머클트리 구조를 적용할 수 있다.\n\n<b>6. 결론</b>\n본 논문은 비트코인에서 초기 동기화 시에 UTXO 확정(commitments)을 이용하기 위해, 머클트리의 노드의 개수를 약 1/2로 줄인 정렬된 머클트리(sorted merkle tree)를 제안한다. 이 머클트리를 사용하면, 매 블록마다 삭제 및 추가되는 UTXO에 때문에 발생하는 머클트리에서 변화된 전체 해시 계산 개수를 줄일 수 있다. 이 때문에 전체 블록체인을 다운받는 초기 블록 다운로드(IBD) 대신에, UTXO set을 다운로드받는 초기 UTXO 다운로드(IUD)를 사용할 수 있을 것으로 추측한다. 결론적으로 우리는 IUD를 사용할 수 있도록, 머클트리에서 노드의 개수를 기존 머클트리에 비해서 약 1/2로 줄인 새로운 머클트리 구조를 제안한다.\n\n<b>References</b>\n[1] Satoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System.” https://bitcoin.org/bitcoin.pdf (2009)\n[2] No Auther, “Bitcoin Core.” https://en.wikipedia.org/wiki/Bitcoin_Core (accessed 3 April 2018)\n[3] No Auther, “Scalability.” Bitcoin Wikipedia https://en.bitcoin.it/wiki/Scalability (accessed 3 April 2018)\n[4] No Auther, “Block Chain Overview.” https://bitcoin.org/en/developer-guide#block-chain-overview\n[5] Aleksandr Bulkin, “Explaining blockchain — how proof of work enables trustless consensus.” https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\n[6] No Auther, “Initial Block Download.” https://bitcoin.org/en/developer-guide#initial-block-download\n[7] No Auther, “Block file pruning.” https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\n[8] No Auther, ”Chain Reorganization.” https://en.bitcoin.it/wiki/Chain_Reorganization\n[9] No Auther, “Full Node.” https://bitcoin.org/en/developer-guide#full-node\n[10] No Auther. “Unspent transaction output set.” Statoshi.info http://statoshi.info/dashboard/db/unspent-transaction-output-set (accessed 5 April 2017)\n[11] Andrew Miller. “Storing UTXOs in a Balanced Merkle Tree.” Bitcointalk https://bitcointalk.org/index.php?topic=101734.0\n[12] No Auther. “Pettycoin Revisted Part I: Utxo Commitments.” http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\n[13] Peter Todd. “Making UTXO Set Growth Irrelevant With Low-Latency Delayed TXO Commitments.” https://petertodd.org/2016/delayed-txo-commitments\n[14] No Auther. “Merkle tree.” https://en.wikipedia.org/wiki/Merkle_tree\n[15] No Auther. “Number of Unspent Transaction Outputs.” https://blockchain.info/charts/utxo-count?timespan=all\n[16] No Auther. “sorted-merkle-tree-issue693.” https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\n[17] Gavin Wood. “Ethereum: A secure decentralized generalized transaction ledger” No Publisher (2014) http://gavwood.com/paper.pdf\n[18] Jae Kwon and Ethan Buchman. “Cosmos whitepaper.” Cosmos https://cosmos.network/whitepaper (accessed 3 April 2018)",
"json_metadata": "{\"tags\":[\"bitcoin\",\"utxo\",\"set\",\"sorted\",\"merkle\",\"tree\"],\"image\":[\"https://miro.medium.com/max/1421/1*1ebaSoGiHup2roFgylS-Hw.png\",\"https://miro.medium.com/max/1395/1*Ar2mYenZ-6JA-dJmVXNUJA.png\",\"https://miro.medium.com/max/2075/1*F8FM1QwcATqUwu7T78CSmA.png\"],\"links\":[\"https://bitcoin.org/bitcoin.pdf\",\"https://en.wikipedia.org/wiki/Bitcoin_Core\",\"https://en.bitcoin.it/wiki/Scalability\",\"https://bitcoin.org/en/developer-guide#block-chain-overview\",\"https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\",\"https://bitcoin.org/en/developer-guide#initial-block-download\",\"https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\",\"https://en.bitcoin.it/wiki/Chain_Reorganization\",\"https://bitcoin.org/en/developer-guide#full-node\",\"http://statoshi.info/dashboard/db/unspent-transaction-output-set\",\"https://bitcointalk.org/index.php?topic=101734.0\",\"http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\",\"https://petertodd.org/2016/delayed-txo-commitments\",\"https://en.wikipedia.org/wiki/Merkle_tree\",\"https://blockchain.info/charts/utxo-count?timespan=all\",\"https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\",\"http://gavwood.com/paper.pdf\",\"https://cosmos.network/whitepaper\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}loumupdated their account properties2019/10/08 13:51:21
loumupdated their account properties
2019/10/08 13:51:21
| account | loum |
| memo key | STM6JAxKTLGQn9izx1vk14ayQZkbva7TxMBiXSFNEJk6cfThZaejT |
| json metadata | {"profile":{"about":"제가 17.5.8일에 Ledger 저널에 제출한 논문: https://goo.gl/EprsXt","name":"loum","location":"Seoul, Korea"}} |
| Transaction Info | Block #37105586/Trx 4bb95803dab2f16d3b0da712008aa55a3a4d5385 |
View Raw JSON Data
{
"trx_id": "4bb95803dab2f16d3b0da712008aa55a3a4d5385",
"block": 37105586,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-08T13:51:21",
"op": [
"account_update",
{
"account": "loum",
"memo_key": "STM6JAxKTLGQn9izx1vk14ayQZkbva7TxMBiXSFNEJk6cfThZaejT",
"json_metadata": "{\"profile\":{\"about\":\"제가 17.5.8일에 Ledger 저널에 제출한 논문: https://goo.gl/EprsXt\",\"name\":\"loum\",\"location\":\"Seoul, Korea\"}}"
}
]
}loumupdated their account properties2019/10/08 13:51:06
loumupdated their account properties
2019/10/08 13:51:06
| account | loum |
| memo key | STM6JAxKTLGQn9izx1vk14ayQZkbva7TxMBiXSFNEJk6cfThZaejT |
| json metadata | {"profile":{"about":"EOS 노드원의 공동창업자 로움입니다. 제가 17.5.8일에 Ledger 저널에 제출한 논문: https://goo.gl/EprsXt","name":"loum","location":"Seoul, Korea"}} |
| Transaction Info | Block #37105581/Trx 9c4efbb1590548c7fd2af01e14dca18820df5139 |
View Raw JSON Data
{
"trx_id": "9c4efbb1590548c7fd2af01e14dca18820df5139",
"block": 37105581,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-10-08T13:51:06",
"op": [
"account_update",
{
"account": "loum",
"memo_key": "STM6JAxKTLGQn9izx1vk14ayQZkbva7TxMBiXSFNEJk6cfThZaejT",
"json_metadata": "{\"profile\":{\"about\":\"EOS 노드원의 공동창업자 로움입니다. 제가 17.5.8일에 Ledger 저널에 제출한 논문: https://goo.gl/EprsXt\",\"name\":\"loum\",\"location\":\"Seoul, Korea\"}}"
}
]
}2019/08/22 15:31:15
2019/08/22 15:31:15
| from | dtube |
| to | loum |
| amount | 0.001 STEEM |
| memo | Time is running out, claim your DTube account now before anyone else can! Login at https://d.tube |
| Transaction Info | Block #35778636/Trx 31447dc1505c8a09d663bac2d139ef7e40977be3 |
View Raw JSON Data
{
"trx_id": "31447dc1505c8a09d663bac2d139ef7e40977be3",
"block": 35778636,
"trx_in_block": 27,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-08-22T15:31:15",
"op": [
"transfer",
{
"from": "dtube",
"to": "loum",
"amount": "0.001 STEEM",
"memo": "Time is running out, claim your DTube account now before anyone else can! Login at https://d.tube"
}
]
}newbizzupvoted (100.00%) @loum / similarities-between-blockchain-and-dna2019/08/08 18:21:42
newbizzupvoted (100.00%) @loum / similarities-between-blockchain-and-dna
2019/08/08 18:21:42
| voter | newbizz |
| author | loum |
| permlink | similarities-between-blockchain-and-dna |
| weight | 10000 (100.00%) |
| Transaction Info | Block #35379559/Trx 550e782ad064960fe3834524ee2941f0860beb30 |
View Raw JSON Data
{
"trx_id": "550e782ad064960fe3834524ee2941f0860beb30",
"block": 35379559,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-08-08T18:21:42",
"op": [
"vote",
{
"voter": "newbizz",
"author": "loum",
"permlink": "similarities-between-blockchain-and-dna",
"weight": 10000
}
]
}2019/07/19 04:06:51
2019/07/19 04:06:51
| parent author | loum |
| parent permlink | vod |
| author | steemitboard |
| permlink | steemitboard-notify-loum-20190719t040651000z |
| title | |
| body | Congratulations @loum! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@loum/birthday3.png</td><td>Happy Birthday! - You are on the Steem blockchain for 3 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@loum) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=loum)_</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"]} |
| Transaction Info | Block #34788632/Trx b0164a577b6537817d1c4af5b27ab21dea106cba |
View Raw JSON Data
{
"trx_id": "b0164a577b6537817d1c4af5b27ab21dea106cba",
"block": 34788632,
"trx_in_block": 9,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-07-19T04:06:51",
"op": [
"comment",
{
"parent_author": "loum",
"parent_permlink": "vod",
"author": "steemitboard",
"permlink": "steemitboard-notify-loum-20190719t040651000z",
"title": "",
"body": "Congratulations @loum! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@loum/birthday3.png</td><td>Happy Birthday! - You are on the Steem blockchain for 3 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@loum) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=loum)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
}
]
}2019/05/03 04:44:45
2019/05/03 04:44:45
| voter | loum |
| author | loum |
| permlink | vod |
| weight | 0 (0.00%) |
| Transaction Info | Block #32574245/Trx ef1218fd9a30317f6a1cedb622006e07c9b1aefc |
View Raw JSON Data
{
"trx_id": "ef1218fd9a30317f6a1cedb622006e07c9b1aefc",
"block": 32574245,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-05-03T04:44:45",
"op": [
"vote",
{
"voter": "loum",
"author": "loum",
"permlink": "vod",
"weight": 0
}
]
}loumremoved vote from (0.00%) @loum / utxo-set-sorted-merkle-tree2019/05/03 04:44:42
loumremoved vote from (0.00%) @loum / utxo-set-sorted-merkle-tree
2019/05/03 04:44:42
| voter | loum |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| weight | 0 (0.00%) |
| Transaction Info | Block #32574244/Trx 210cdb825510e9c9c399a5eaf55be9ba8ada9256 |
View Raw JSON Data
{
"trx_id": "210cdb825510e9c9c399a5eaf55be9ba8ada9256",
"block": 32574244,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-05-03T04:44:42",
"op": [
"vote",
{
"voter": "loum",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"weight": 0
}
]
}2019/05/03 04:44:27
2019/05/03 04:44:27
| voter | loum |
| author | loum |
| permlink | vod |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32574239/Trx 6f246957670cfc01861f1c0dd81af321495bfd72 |
View Raw JSON Data
{
"trx_id": "6f246957670cfc01861f1c0dd81af321495bfd72",
"block": 32574239,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-05-03T04:44:27",
"op": [
"vote",
{
"voter": "loum",
"author": "loum",
"permlink": "vod",
"weight": 10000
}
]
}loumupvoted (100.00%) @loum / utxo-set-sorted-merkle-tree2019/05/03 04:44:24
loumupvoted (100.00%) @loum / utxo-set-sorted-merkle-tree
2019/05/03 04:44:24
| voter | loum |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32574238/Trx ab13e2c17f70e22b5f8c8131cd8bb131251de229 |
View Raw JSON Data
{
"trx_id": "ab13e2c17f70e22b5f8c8131cd8bb131251de229",
"block": 32574238,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-05-03T04:44:24",
"op": [
"vote",
{
"voter": "loum",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"weight": 10000
}
]
}coinfarmer165upvoted (100.00%) @loum / vod2019/04/23 05:46:54
coinfarmer165upvoted (100.00%) @loum / vod
2019/04/23 05:46:54
| voter | coinfarmer165 |
| author | loum |
| permlink | vod |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32287645/Trx 2f411099ad0c8be4dc73ea27933f820e21073db6 |
View Raw JSON Data
{
"trx_id": "2f411099ad0c8be4dc73ea27933f820e21073db6",
"block": 32287645,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-23T05:46:54",
"op": [
"vote",
{
"voter": "coinfarmer165",
"author": "loum",
"permlink": "vod",
"weight": 10000
}
]
}dj-on-steemupvoted (31.00%) @loum / vod2019/04/22 20:36:36
dj-on-steemupvoted (31.00%) @loum / vod
2019/04/22 20:36:36
| voter | dj-on-steem |
| author | loum |
| permlink | vod |
| weight | 3100 (31.00%) |
| Transaction Info | Block #32276643/Trx 35943cbc75f6b7f0175be6a5fa90f3a1343f1523 |
View Raw JSON Data
{
"trx_id": "35943cbc75f6b7f0175be6a5fa90f3a1343f1523",
"block": 32276643,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-22T20:36:36",
"op": [
"vote",
{
"voter": "dj-on-steem",
"author": "loum",
"permlink": "vod",
"weight": 3100
}
]
}dj-on-steemupvoted (31.00%) @loum / utxo-set-sorted-merkle-tree2019/04/20 18:43:03
dj-on-steemupvoted (31.00%) @loum / utxo-set-sorted-merkle-tree
2019/04/20 18:43:03
| voter | dj-on-steem |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| weight | 3100 (31.00%) |
| Transaction Info | Block #32216795/Trx 0bf797a5aeea87f8d7651fffaa0819813f1f4294 |
View Raw JSON Data
{
"trx_id": "0bf797a5aeea87f8d7651fffaa0819813f1f4294",
"block": 32216795,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-20T18:43:03",
"op": [
"vote",
{
"voter": "dj-on-steem",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"weight": 3100
}
]
}2019/04/20 06:28:51
2019/04/20 06:28:51
| parent author | |
| parent permlink | payment |
| author | loum |
| permlink | vod |
| title | [한국은행 동영상 강의] 지급결재 시스템의 이해 |
| body | @@ -11,11 +11,14 @@ %EC%9D%80%ED%96%89%EC%9D%98 -VOD +%EB%8F%99%EC%98%81%EC%83%81 %EA%B0%95%EC%9D%98 %EB%A1%9C %EC%A7%80%EA%B8%89 |
| json metadata | {"tags":["payment","settlement"],"links":["https://www.bok.or.kr/portal/bbs/B0000217/view.do?nttId=10045105&menuNo=200144&listType=G&pageIndex=3"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #32202120/Trx 43c039c809370175784c1e3a01e072100a323b5b |
View Raw JSON Data
{
"trx_id": "43c039c809370175784c1e3a01e072100a323b5b",
"block": 32202120,
"trx_in_block": 46,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-20T06:28:51",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "payment",
"author": "loum",
"permlink": "vod",
"title": "[한국은행 동영상 강의] 지급결재 시스템의 이해",
"body": "@@ -11,11 +11,14 @@\n %EC%9D%80%ED%96%89%EC%9D%98 \n-VOD\n+%EB%8F%99%EC%98%81%EC%83%81 %EA%B0%95%EC%9D%98\n %EB%A1%9C %EC%A7%80%EA%B8%89\n",
"json_metadata": "{\"tags\":[\"payment\",\"settlement\"],\"links\":[\"https://www.bok.or.kr/portal/bbs/B0000217/view.do?nttId=10045105&menuNo=200144&listType=G&pageIndex=3\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}blockcreateupvoted (1.00%) @loum / vod2019/04/19 02:07:30
blockcreateupvoted (1.00%) @loum / vod
2019/04/19 02:07:30
| voter | blockcreate |
| author | loum |
| permlink | vod |
| weight | 100 (1.00%) |
| Transaction Info | Block #32168114/Trx d2c2c7a36f383b15d5deb93da5114e18f7b1b9d5 |
View Raw JSON Data
{
"trx_id": "d2c2c7a36f383b15d5deb93da5114e18f7b1b9d5",
"block": 32168114,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-19T02:07:30",
"op": [
"vote",
{
"voter": "blockcreate",
"author": "loum",
"permlink": "vod",
"weight": 100
}
]
}2019/04/19 01:48:51
2019/04/19 01:48:51
| voter | sergino |
| author | loum |
| permlink | vod |
| weight | 200 (2.00%) |
| Transaction Info | Block #32167741/Trx 0b080383c7cd51a921573b477b8afb1db52723d1 |
View Raw JSON Data
{
"trx_id": "0b080383c7cd51a921573b477b8afb1db52723d1",
"block": 32167741,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-19T01:48:51",
"op": [
"vote",
{
"voter": "sergino",
"author": "loum",
"permlink": "vod",
"weight": 200
}
]
}2019/04/19 01:46:12
2019/04/19 01:46:12
| required auths | [] |
| required posting auths | ["loum"] |
| id | follow |
| json | ["follow",{"follower":"loum","following":"wans","what":["blog"]}] |
| Transaction Info | Block #32167688/Trx b38840c1e0e4cb4f4066faea294f3df7c20930f7 |
View Raw JSON Data
{
"trx_id": "b38840c1e0e4cb4f4066faea294f3df7c20930f7",
"block": 32167688,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-19T01:46:12",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"loum"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"loum\",\"following\":\"wans\",\"what\":[\"blog\"]}]"
}
]
}loumunfollowed @eosnodeone2019/04/19 01:45:57
loumunfollowed @eosnodeone
2019/04/19 01:45:57
| required auths | [] |
| required posting auths | ["loum"] |
| id | follow |
| json | ["follow",{"follower":"loum","following":"eosnodeone","what":[]}] |
| Transaction Info | Block #32167683/Trx 1a81baef6a016ab67e69c4fed4109ce30f2acc70 |
View Raw JSON Data
{
"trx_id": "1a81baef6a016ab67e69c4fed4109ce30f2acc70",
"block": 32167683,
"trx_in_block": 21,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-19T01:45:57",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"loum"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"loum\",\"following\":\"eosnodeone\",\"what\":[]}]"
}
]
}2019/04/19 01:39:51
2019/04/19 01:39:51
| parent author | |
| parent permlink | payment |
| author | loum |
| permlink | vod |
| title | [한국은행 VOD] 지급결재 시스템의 이해 |
| body | 아래의 링크는 한국은행의 VOD로 지급결제에 대한 강의입니다. 아주 쉽게 설명을 해주셔서 잘 이해할 수 있었습니다. --------------------------------- □ 제744회 한은금요강좌 ㅇ 주제 : 금융 IT 시스템의 이해 ㅇ 강사 : 금융결제국 전자금융기획팀 윤재호 차장 https://www.bok.or.kr/portal/bbs/B0000217/view.do?nttId=10045105&menuNo=200144&listType=G&pageIndex=3 |
| json metadata | {"tags":["payment","settlement"],"links":["https://www.bok.or.kr/portal/bbs/B0000217/view.do?nttId=10045105&menuNo=200144&listType=G&pageIndex=3"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #32167561/Trx 918856817ff56bec0764f34539700ed31b69e6a4 |
View Raw JSON Data
{
"trx_id": "918856817ff56bec0764f34539700ed31b69e6a4",
"block": 32167561,
"trx_in_block": 16,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-19T01:39:51",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "payment",
"author": "loum",
"permlink": "vod",
"title": "[한국은행 VOD] 지급결재 시스템의 이해",
"body": "아래의 링크는 한국은행의 VOD로 지급결제에 대한 강의입니다.\n\n아주 쉽게 설명을 해주셔서 잘 이해할 수 있었습니다.\n\n---------------------------------\n\n□ 제744회 한은금요강좌\n\nㅇ 주제 : 금융 IT 시스템의 이해\n\nㅇ 강사 : 금융결제국 전자금융기획팀 윤재호 차장\n\nhttps://www.bok.or.kr/portal/bbs/B0000217/view.do?nttId=10045105&menuNo=200144&listType=G&pageIndex=3",
"json_metadata": "{\"tags\":[\"payment\",\"settlement\"],\"links\":[\"https://www.bok.or.kr/portal/bbs/B0000217/view.do?nttId=10045105&menuNo=200144&listType=G&pageIndex=3\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}2019/04/17 07:02:36
2019/04/17 07:02:36
| required auths | [] |
| required posting auths | ["loum"] |
| id | follow |
| json | ["follow",{"follower":"loum","following":"eosphere","what":[]}] |
| Transaction Info | Block #32116446/Trx 27897394765373ae07275095d74cba2743c39c81 |
View Raw JSON Data
{
"trx_id": "27897394765373ae07275095d74cba2743c39c81",
"block": 32116446,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T07:02:36",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"loum"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"loum\",\"following\":\"eosphere\",\"what\":[]}]"
}
]
}loumunfollowed @eosnation2019/04/17 07:02:12
loumunfollowed @eosnation
2019/04/17 07:02:12
| required auths | [] |
| required posting auths | ["loum"] |
| id | follow |
| json | ["follow",{"follower":"loum","following":"eosnation","what":[]}] |
| Transaction Info | Block #32116438/Trx 3409d1b3345077a9273a671ebbb41041f6cc4118 |
View Raw JSON Data
{
"trx_id": "3409d1b3345077a9273a671ebbb41041f6cc4118",
"block": 32116438,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T07:02:12",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"loum"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"loum\",\"following\":\"eosnation\",\"what\":[]}]"
}
]
}2019/04/17 07:02:06
2019/04/17 07:02:06
| required auths | [] |
| required posting auths | ["loum"] |
| id | follow |
| json | ["follow",{"follower":"loum","following":"dexeosio","what":[]}] |
| Transaction Info | Block #32116436/Trx f67916e5ecf3bb8ebb06bfdeb5c6627eb3ef55bd |
View Raw JSON Data
{
"trx_id": "f67916e5ecf3bb8ebb06bfdeb5c6627eb3ef55bd",
"block": 32116436,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T07:02:06",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"loum"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"loum\",\"following\":\"dexeosio\",\"what\":[]}]"
}
]
}2019/04/17 06:45:24
2019/04/17 06:45:24
| parent author | loum |
| parent permlink | utxo-set-sorted-merkle-tree |
| author | loum |
| permlink | re-loum-utxo-set-sorted-merkle-tree-20190417t062356902z |
| title | |
| body | 블록체인은 은행 통장의 모든 거래기록과 같습니다. 노드는 블록체인의 전체 거래 기록을 처음부터 마지막까지 잔고를 계산하는 방법을 사용합니다. 하지만 현재 은행 잔고를 동기화할 수 있습니다. 이와 마찬가지로, 비트코인도 일종의 로그 데이터인 전체 블록체인 데이터를 가지고 있는 것이 아니라 마지막 잔고인 UTXO set만을 동기화 시키는 방법에 대한 논문입니다. |
| json metadata | {"tags":["blockchain"],"app":"steemit/0.1"} |
| Transaction Info | Block #32116102/Trx ebaa0e0dc50870209ecffe2b263abd43c16efac8 |
View Raw JSON Data
{
"trx_id": "ebaa0e0dc50870209ecffe2b263abd43c16efac8",
"block": 32116102,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T06:45:24",
"op": [
"comment",
{
"parent_author": "loum",
"parent_permlink": "utxo-set-sorted-merkle-tree",
"author": "loum",
"permlink": "re-loum-utxo-set-sorted-merkle-tree-20190417t062356902z",
"title": "",
"body": "블록체인은 은행 통장의 모든 거래기록과 같습니다. 노드는 블록체인의 전체 거래 기록을 처음부터 마지막까지 잔고를 계산하는 방법을 사용합니다.\n\n하지만 현재 은행 잔고를 동기화할 수 있습니다. 이와 마찬가지로, 비트코인도 일종의 로그 데이터인 전체 블록체인 데이터를 가지고 있는 것이 아니라 마지막 잔고인 UTXO set만을 동기화 시키는 방법에 대한 논문입니다.",
"json_metadata": "{\"tags\":[\"blockchain\"],\"app\":\"steemit/0.1\"}"
}
]
}2019/04/17 06:24:00
2019/04/17 06:24:00
| parent author | loum |
| parent permlink | utxo-set-sorted-merkle-tree |
| author | loum |
| permlink | re-loum-utxo-set-sorted-merkle-tree-20190417t062356902z |
| title | |
| body | 블록체인은 은행 통장의 모든 거래기록과 같습니다. 블록체인은 마치 노드가 이런 전체 거래 기록을 처음부터 계산하여 마지막 잔고를 계산하는 방법을 사용합니다. 하지만 우리는 현재의 은행 잔고를 마지막 거래와 같이 적혀있는 것을 보고 바로 알 수 있습니다. 이와 마찬가지로, 비트코인도 일종의 로그 데이터인 전체 블록체인을 가지고 있는 것이 아니라 마지막 잔고인 UTXO set만을 동기화 시키는 방법에 대한 것입니다. |
| json metadata | {"tags":["blockchain"],"app":"steemit/0.1"} |
| Transaction Info | Block #32115674/Trx 4d56f7f5738d7a88670d97be5c312043b7720de8 |
View Raw JSON Data
{
"trx_id": "4d56f7f5738d7a88670d97be5c312043b7720de8",
"block": 32115674,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T06:24:00",
"op": [
"comment",
{
"parent_author": "loum",
"parent_permlink": "utxo-set-sorted-merkle-tree",
"author": "loum",
"permlink": "re-loum-utxo-set-sorted-merkle-tree-20190417t062356902z",
"title": "",
"body": "블록체인은 은행 통장의 모든 거래기록과 같습니다. 블록체인은 마치 노드가 이런 전체 거래 기록을 처음부터 계산하여 마지막 잔고를 계산하는 방법을 사용합니다. \n\n하지만 우리는 현재의 은행 잔고를 마지막 거래와 같이 적혀있는 것을 보고 바로 알 수 있습니다. 이와 마찬가지로, 비트코인도 일종의 로그 데이터인 전체 블록체인을 가지고 있는 것이 아니라 마지막 잔고인 UTXO set만을 동기화 시키는 방법에 대한 것입니다.",
"json_metadata": "{\"tags\":[\"blockchain\"],\"app\":\"steemit/0.1\"}"
}
]
}loumpublished a new post: utxo-set-sorted-merkle-tree2019/04/17 06:17:51
loumpublished a new post: utxo-set-sorted-merkle-tree
2019/04/17 06:17:51
| parent author | |
| parent permlink | blockchain |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| title | 비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree) |
| body | @@ -275,24 +275,16 @@ %EB%B0%A9%EB%B2%95%EC%9D%80 -%EB%A1%9C%EB%93%9C %EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%B8 +%EC%A0%84%EC%B2%B4 %EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8 - %EC%A0%84%EC%B2%B4%EB%A5%BC +%EC%9D%84 %EB%8B%A4%EC%9A%B4%EB%B0%9B |
| json metadata | {"tags":["blockchain","bitcoin","merkle","tree","utxo"],"image":["https://cdn.steemitimages.com/DQmehiKmBH4gwbnAhWymQ3iNo88CxWizUyJWtp3vPCCfqDn/fig1.png","https://cdn.steemitimages.com/DQmWvT63aneVv51GZLvb3zgCnJKCKNutnRTHx3bYAaMtTvP/fig2.png","https://cdn.steemitimages.com/DQmWKaoaCzAMgSaczWANdsSATJKjn4uqc59nCQUDCfTnMFE/fig3.png"],"links":["https://bitcoin.org/bitcoin.pdf","https://en.wikipedia.org/wiki/Bitcoin_Core","https://en.bitcoin.it/wiki/Scalability","https://bitcoin.org/en/developer-guide#block-chain-overview","https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845","https://bitcoin.org/en/developer-guide#initial-block-download","https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning","https://en.bitcoin.it/wiki/Chain_Reorganization","https://bitcoin.org/en/developer-guide#full-node","http://statoshi.info/dashboard/db/unspent-transaction-output-set","https://bitcointalk.org/index.php?topic=101734.0","http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html","https://petertodd.org/2016/delayed-txo-commitments","https://en.wikipedia.org/wiki/Merkle_tree","https://blockchain.info/charts/utxo-count?timespan=all","https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0","http://gavwood.com/paper.pdf","https://cosmos.network/whitepaper"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #32115553/Trx 4b2d4e339b4e967efb328c4156b82bbd5630694c |
View Raw JSON Data
{
"trx_id": "4b2d4e339b4e967efb328c4156b82bbd5630694c",
"block": 32115553,
"trx_in_block": 41,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T06:17:51",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"title": "비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree)",
"body": "@@ -275,24 +275,16 @@\n %EB%B0%A9%EB%B2%95%EC%9D%80 \n-%EB%A1%9C%EB%93%9C %EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%B8\n+%EC%A0%84%EC%B2%B4\n %EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8\n- %EC%A0%84%EC%B2%B4%EB%A5%BC\n+%EC%9D%84\n %EB%8B%A4%EC%9A%B4%EB%B0%9B\n",
"json_metadata": "{\"tags\":[\"blockchain\",\"bitcoin\",\"merkle\",\"tree\",\"utxo\"],\"image\":[\"https://cdn.steemitimages.com/DQmehiKmBH4gwbnAhWymQ3iNo88CxWizUyJWtp3vPCCfqDn/fig1.png\",\"https://cdn.steemitimages.com/DQmWvT63aneVv51GZLvb3zgCnJKCKNutnRTHx3bYAaMtTvP/fig2.png\",\"https://cdn.steemitimages.com/DQmWKaoaCzAMgSaczWANdsSATJKjn4uqc59nCQUDCfTnMFE/fig3.png\"],\"links\":[\"https://bitcoin.org/bitcoin.pdf\",\"https://en.wikipedia.org/wiki/Bitcoin_Core\",\"https://en.bitcoin.it/wiki/Scalability\",\"https://bitcoin.org/en/developer-guide#block-chain-overview\",\"https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\",\"https://bitcoin.org/en/developer-guide#initial-block-download\",\"https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\",\"https://en.bitcoin.it/wiki/Chain_Reorganization\",\"https://bitcoin.org/en/developer-guide#full-node\",\"http://statoshi.info/dashboard/db/unspent-transaction-output-set\",\"https://bitcointalk.org/index.php?topic=101734.0\",\"http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\",\"https://petertodd.org/2016/delayed-txo-commitments\",\"https://en.wikipedia.org/wiki/Merkle_tree\",\"https://blockchain.info/charts/utxo-count?timespan=all\",\"https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\",\"http://gavwood.com/paper.pdf\",\"https://cosmos.network/whitepaper\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}jonghun98upvoted (100.00%) @loum / utxo-set-sorted-merkle-tree2019/04/17 06:16:39
jonghun98upvoted (100.00%) @loum / utxo-set-sorted-merkle-tree
2019/04/17 06:16:39
| voter | jonghun98 |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32115529/Trx 0b4fa6f53c4737b2b1d00248bb15959855b7bb03 |
View Raw JSON Data
{
"trx_id": "0b4fa6f53c4737b2b1d00248bb15959855b7bb03",
"block": 32115529,
"trx_in_block": 53,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T06:16:39",
"op": [
"vote",
{
"voter": "jonghun98",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"weight": 10000
}
]
}dragonticketerupvoted (100.00%) @loum / utxo-set-sorted-merkle-tree2019/04/17 06:16:33
dragonticketerupvoted (100.00%) @loum / utxo-set-sorted-merkle-tree
2019/04/17 06:16:33
| voter | dragonticketer |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32115527/Trx 92ab99cdf239bc31a177da76f9cb5252198a76f0 |
View Raw JSON Data
{
"trx_id": "92ab99cdf239bc31a177da76f9cb5252198a76f0",
"block": 32115527,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T06:16:33",
"op": [
"vote",
{
"voter": "dragonticketer",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"weight": 10000
}
]
}ricardo306upvoted (100.00%) @loum / utxo-set-sorted-merkle-tree2019/04/17 06:05:03
ricardo306upvoted (100.00%) @loum / utxo-set-sorted-merkle-tree
2019/04/17 06:05:03
| voter | ricardo306 |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32115297/Trx 5cf47b057500b69871615675c435959f4580c612 |
View Raw JSON Data
{
"trx_id": "5cf47b057500b69871615675c435959f4580c612",
"block": 32115297,
"trx_in_block": 15,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T06:05:03",
"op": [
"vote",
{
"voter": "ricardo306",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"weight": 10000
}
]
}loumpublished a new post: utxo-set-sorted-merkle-tree2019/04/17 05:56:42
loumpublished a new post: utxo-set-sorted-merkle-tree
2019/04/17 05:56:42
| parent author | |
| parent permlink | blockchain |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| title | 비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree) |
| body | @@ -68,17 +68,16 @@ , %EC%9D%BC%EB%B6%80 %EB%82%B4%EC%9A%A9%EC%9D%80 -%EB%8A%94 %EC%9D%B4 %EB%82%A0%EC%A7%9C%EB%A5%BC %EA%B8%B0%EC%A4%80 |
| json metadata | {"tags":["blockchain","bitcoin","merkle","tree","utxo"],"image":["https://cdn.steemitimages.com/DQmehiKmBH4gwbnAhWymQ3iNo88CxWizUyJWtp3vPCCfqDn/fig1.png","https://cdn.steemitimages.com/DQmWvT63aneVv51GZLvb3zgCnJKCKNutnRTHx3bYAaMtTvP/fig2.png","https://cdn.steemitimages.com/DQmWKaoaCzAMgSaczWANdsSATJKjn4uqc59nCQUDCfTnMFE/fig3.png"],"links":["https://bitcoin.org/bitcoin.pdf","https://en.wikipedia.org/wiki/Bitcoin_Core","https://en.bitcoin.it/wiki/Scalability","https://bitcoin.org/en/developer-guide#block-chain-overview","https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845","https://bitcoin.org/en/developer-guide#initial-block-download","https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning","https://en.bitcoin.it/wiki/Chain_Reorganization","https://bitcoin.org/en/developer-guide#full-node","http://statoshi.info/dashboard/db/unspent-transaction-output-set","https://bitcointalk.org/index.php?topic=101734.0","http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html","https://petertodd.org/2016/delayed-txo-commitments","https://en.wikipedia.org/wiki/Merkle_tree","https://blockchain.info/charts/utxo-count?timespan=all","https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0","http://gavwood.com/paper.pdf","https://cosmos.network/whitepaper"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #32115130/Trx 7f4d66e64309d2ff3a10d68c1367991227756410 |
View Raw JSON Data
{
"trx_id": "7f4d66e64309d2ff3a10d68c1367991227756410",
"block": 32115130,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T05:56:42",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"title": "비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree)",
"body": "@@ -68,17 +68,16 @@\n , %EC%9D%BC%EB%B6%80 %EB%82%B4%EC%9A%A9%EC%9D%80\n-%EB%8A%94\n %EC%9D%B4 %EB%82%A0%EC%A7%9C%EB%A5%BC %EA%B8%B0%EC%A4%80\n",
"json_metadata": "{\"tags\":[\"blockchain\",\"bitcoin\",\"merkle\",\"tree\",\"utxo\"],\"image\":[\"https://cdn.steemitimages.com/DQmehiKmBH4gwbnAhWymQ3iNo88CxWizUyJWtp3vPCCfqDn/fig1.png\",\"https://cdn.steemitimages.com/DQmWvT63aneVv51GZLvb3zgCnJKCKNutnRTHx3bYAaMtTvP/fig2.png\",\"https://cdn.steemitimages.com/DQmWKaoaCzAMgSaczWANdsSATJKjn4uqc59nCQUDCfTnMFE/fig3.png\"],\"links\":[\"https://bitcoin.org/bitcoin.pdf\",\"https://en.wikipedia.org/wiki/Bitcoin_Core\",\"https://en.bitcoin.it/wiki/Scalability\",\"https://bitcoin.org/en/developer-guide#block-chain-overview\",\"https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\",\"https://bitcoin.org/en/developer-guide#initial-block-download\",\"https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\",\"https://en.bitcoin.it/wiki/Chain_Reorganization\",\"https://bitcoin.org/en/developer-guide#full-node\",\"http://statoshi.info/dashboard/db/unspent-transaction-output-set\",\"https://bitcointalk.org/index.php?topic=101734.0\",\"http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\",\"https://petertodd.org/2016/delayed-txo-commitments\",\"https://en.wikipedia.org/wiki/Merkle_tree\",\"https://blockchain.info/charts/utxo-count?timespan=all\",\"https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\",\"http://gavwood.com/paper.pdf\",\"https://cosmos.network/whitepaper\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}resteemyousent 0.001 STEEM to @loum- "Hi! I re-blog posts to 6500+ followers for only 0.03 SBD/Steem & I don't leave comments. Thanx ♥"2019/04/17 05:55:21
resteemyousent 0.001 STEEM to @loum- "Hi! I re-blog posts to 6500+ followers for only 0.03 SBD/Steem & I don't leave comments. Thanx ♥"
2019/04/17 05:55:21
| from | resteemyou |
| to | loum |
| amount | 0.001 STEEM |
| memo | Hi! I re-blog posts to 6500+ followers for only 0.03 SBD/Steem & I don't leave comments. Thanx ♥ |
| Transaction Info | Block #32115103/Trx a8879fab22a401266a882474973f203105956bfe |
View Raw JSON Data
{
"trx_id": "a8879fab22a401266a882474973f203105956bfe",
"block": 32115103,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T05:55:21",
"op": [
"transfer",
{
"from": "resteemyou",
"to": "loum",
"amount": "0.001 STEEM",
"memo": "Hi! I re-blog posts to 6500+ followers for only 0.03 SBD/Steem & I don't leave comments. Thanx ♥"
}
]
}serginoupvoted (2.00%) @loum / utxo-set-sorted-merkle-tree2019/04/17 05:55:03
serginoupvoted (2.00%) @loum / utxo-set-sorted-merkle-tree
2019/04/17 05:55:03
| voter | sergino |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| weight | 200 (2.00%) |
| Transaction Info | Block #32115097/Trx d3e9e96b51db6b3ef112c4d63f5c27eed1f13cf6 |
View Raw JSON Data
{
"trx_id": "d3e9e96b51db6b3ef112c4d63f5c27eed1f13cf6",
"block": 32115097,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T05:55:03",
"op": [
"vote",
{
"voter": "sergino",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"weight": 200
}
]
}loumpublished a new post: utxo-set-sorted-merkle-tree2019/04/17 05:46:00
loumpublished a new post: utxo-set-sorted-merkle-tree
2019/04/17 05:46:00
| parent author | |
| parent permlink | blockchain |
| author | loum |
| permlink | utxo-set-sorted-merkle-tree |
| title | 비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree) |
| body | <center> <h5>김성일 </h5></center> <br> /* 이 글은 2017년 7월 경에 작성했던 것이라서, 일부 내용은는이 날짜를 기준으로 작성되었다 */ <br> <center><h5>Abstract.</h5> </center> 비트코인은 다른 노드들을 믿지 못하는 비신뢰 특성 때문에, 새로 블록생성에 참여하는 새 노드는 초기 블록체인 동기화(Initial Blockchain Download, IBD)를 통해 전체 블록체인을 전송받고 이를 검증해야 한다. 하지만, 이 방법은 로드 데이터인 블록체인 전체를 다운받아야 하기 때문에 여러 가지 문제를 발생시킨다. 이 논문은 이를 해결하기 위한 방법 중에 새 노드가 전체 블록체인 대신에, 거래의 전체 상태인 UTXO set를 다운로드받는 UTXO 확정(UTXO commitments) 방법을 살펴본다. 하지만 이 방법은 현재 여러 문제로 적용되지 못하고 있다. 이를 해결하기 위해, 우리는 기존 트리를 이용하는 새로운 정렬된 머클트리(sorted merkle tree)를 제안한다. 이것은 UTXO set을 머클트리로 만들 때 기존의 머클트리에 비해 노드의 개수를 약 1/2로 줄일 수 있다. <h3>1 . 서론</h3> 비트코인(Bitcoin)과 같은 블록체인 기술은 신뢰하는 중앙기관이 없이 분산된 다수의 노드들이 피어-투-피어(peer-to-peer, p2p) 네트워크를 구성하여 데이터베이스(DB)인 블록체인을 관리하는 DB 기술이다.[1] 또한 이것은 각 노드들이 동일한 블록체인을 보관하도록 복제하는 복제 시스템(replication system)이다. P2P 네트워크를 구성하는 노드들은 작업증명(proof-of-work, PoW) 또는 지분증명(proof-of-stake, PoS) 합의 알고리즘을 통해서 어느 노드가 새로운 블록을 생성할지를 결정한다. 즉, 비트코인 네트워크에는 합의 알고리즘을 통해 노드들이 하나의 주체인(main chain)을 유지하여 이중지출 방지한다. 따라서 합의 알고리즘이 이중지출(doubling spending)을 막는 핵심적인 역할을 하고, 블록체인 자체는 추가 전용 데이터베이스(append-only database)에 불과하다. 블록체인은 추가 전용 DB이기 때문에, 그 크기가 선형적으로 계속 늘어날 수밖에 없다. 예로, 2017년 5월 20일(이하, ‘현재’라고 칭함)에 비트코인의 블록체인 사이즈는 116 GiB이었고, 최근 1년 동안 블록체인 사이즈는 47 GiB가 증가했다. 현재 비트코인 코어(bitcoin core)에서 블록 사이즈는 1 MiB로 고정되어 있고,[2] 평균적으로 10분에 한 번씩 블록을 생성하므로 1년 동안 추가될 수 있는 블록 사이즈는 1 MiB * 6 * 24 * 365 , 즉52.56 GiB이다. 현재 비트코인 네트워크의 예상 최대 거래 처리량은 초당 7거래로 알려져 있지만[3], 현재 평균적으로 약 3~4 거래를 처리하고 있다. 이에 반해서 비자카드에서 거래의 평균 초당 처리량은 약 2,000 거래이며, 최대(peak) 처리량은 초당 약 56,000 거래로 알려졌다.[3] 따라서 비트코인의 현재 거래 처리량은 매우 작다. 이 때문에, 만일 비트코인의 초당 거래 처리량이 크게 증가한다면, 블록체인의 사이즈 문제는 더욱 심각해질 것이다. 또한 블록체인은 추가 전용 DB이기 때문에 그 크기가 너무 빠르게 증가하는 피할 수 없는 문제를 가진다. <h3>2 . 비트코인에서 거래 및 거래의 전체 상태</h3> 비트코인에서 거래(transaction)는 하나 이상의 입력과 출력(one or more of inputs and outputs)으로 구성된다. 비트코인에서 거래의 출력(outputs)은 단 한 번만 입력(input)에서 소비될 수 있기 때문에, 소비되지 않은 거래 출력(unspent transaction outputs, UTXOs)과 이미 소비된 거래 출력(spent transaction outputs, STXOs)으로 구분된다. 구체적으로, 입력은 소유자가 소비할 수 있는 UTXO와 디지털 서명과 공개키로 구성되고, 출력은 새로운 UTXO를 생성하기 위한 지갑주소와 이체할 코인 개수로 이루어진다. 따라서 거래가 유효하려면, 입력에 STXO가 아닌 UTXO만 사용하여 소비해야 한다.[4] 결국 비트코인에서 거래는 UTXO를 소비하여 STXO로 만들고 새로운 UTXO를 생성하는 과정이다.[4] 비트코인 지갑은 일반적으로 거래의 입력과 출력을 디지털 서명하여 네트워크에 전파한다. 즉 비트코인은 소유권의 증거로 디지털 서명을 제공하는 서명 기반의 소유권 이전 시스템이다. 그림 1은 비트코인의 주요 DB인 맴풀(mempool), 블록체인 그리고 UTXO set을 보여준다. 여기서, 맴풀은 블록에 기록되기를 기다리는 미승인 거래(unconfirmed Tx)를 저장하는 DB이고, 이 때문에 특정 거래가 블록에 기록이 되면 이 거래는 맴풀에서 삭제된다. UTXO set는 미래에 사용할 수 있는 출력인 모든 UTXO를 모아놓은 DB이고, 이 때문에 새 블록이 전파될 때마다 이것의 내용이 바뀐다. 구체적으로, 새 블록이 전파될 때마다 이 블록에 포함된 거래에 의해서 STXO, 즉 소비한 UTXO를 UTXO set에서 제거하고, 새로 발생한 UTXO를 이것에 추가하여 내용을 업데이트한다. 따라서 UTXO set은 전체 계정 상태와 같이 거래의 전체 상태를 관리한다. 여기서 중요한 것은 “공개 블록체인(public blockchain)의 비신뢰 특성 때문에, 분산된 노드들이 블록체인을 통해서 모든 거래를 독립적으로 검증하여 거래의 전체 상태인 UTXO set를 완성하는 것이다.”는 것이다. 따라서 비트코인은 노드 관점에서 블록체인을 복제하여 이를 동기화하고, 이를 통해서 모든 거래를 독립적으로 검증하여 전체 상태인 UTXO 세트를 완성하는 것이다. 이는 비트코인의 비신뢰(trustless) 특성 때문이다. 결국 비트코인의 모든 상태는 UTXO set와 맴풀이 가지고 있다. 이때 UTXO 세트는 전체 상태인 모든 UTXO를 관리하고, 맴풀은 블록체인에 기록되기를 기다리는 모든 미승인 거래(unconfirmed Tx)를 관리한다. <center></center> 그림1. 비트코인의 주요 데이터베이스. 비트코인에서 UTXO set은 거래의 전체 상태를 가진 DB이고, 블록체인은 추가전용의 로그 DB이다. 이 둘은 블록에 포함된 승인된 거래(confirmed Tx)를 관리한다. 맴풀은 블록에 포함되기를 기다리는 미승인 거래들(unconfirmed Tx)을 관리하는 DB이다. 비트코인은 분산된 비신뢰 합의 알고리즘(distributed trustless consensus algorithm)이기 때문에 노드는 다른 노드들을 믿을 수 없다.[5] 이 때문에 노드 자신이 전체 블록체인을 독립적으로 검증해야 한다. 이것은 블록이 디지털 서명이 포함된 거래와 다른 블록과 체인으로 연결되어 있기 때문에 가능한 것이다. 이 때문에, 새 노드가 비트코인 네트워크에 처음 접속하면, 그는 전체 블록체인을 반드시 다운로드 받으며, 이를 초기 블록체인 동기화(Initial Block Download, IBD)라고 부른다[6]. 즉 IBD는 새 노드가 비신뢰 네트워크에서 독립성을 유지하기 위해 블록체인 전체를 다운받아 모든 거래를 검증하고, 이를 통해서 올바른 UTXO 세트를 독립적으로 완성하기 위한 목적으로 사용한다. 참고로, 비트코인 코어(bitcoin core) 0.10.0은 노드가 144개의 블록, 즉 약 24시간 이상 동안 네트워크에 접속하지 못하면, IBD를 다시 시작하여 블록체인을 동기화시킨다[6]. <h3>3 . 최근의 블록체인만 포함한 부분 삭제 노드(pruned node)</h3> 부분 삭제 노드(pruned node)는 전체 블록체인을 저장하지 않는 노드를 말한다.[7] 구체적으로 말하면, 새 노드가 전체 블록체인을 다운받고 이를 검증한 후, UTXO set을 완성한다. 그 후 이 노드는 특정 개수의 최근 블록체인만을 가지고 있고, 그전의 블록체인을 삭제한 부분 삭제 노드(pruned node)가 될 수 있다[7]. 이 노드는 전체 블록체인을 검증하여 거래의 상태인 UTXO set를 완성했기 때문에, 전체 블록체인 대신에 최신의 일부 블록체인만을 저장하고 있어도 올바로 동작한다. 따라서 만일 자신의 노드만 생각한다면, 노드가 일단 UTXO set을 완성한 후에 전체 블록체인을 가지고 있을 필요는 없다. 이 노드는 단지 블록체인에 포크가 발생하였을 경우를 대비하여 최근의 몇 개 블록만 저장해도 된다.[8]. 노드들이 전체 블록체인을 가지고 있는 목적은 새 노드들이 블록생산(채굴)에 참여할 수 있도록 이들에게 전체 블록체인을 제공하는 위한 것이다[9]. <center></center> 그림 2. (a) 전체 헤더부와 거래부를 저장하는 기존 블록체인, (b) 특정 개수의 최근 블록체인을 저장하는 부분 삭제 블록체인(pruned blockchain). 여기서, 부분 삭제 블록체인은 노드가 일정한 개수의 최근 블록을 가지고 있고, 그 이외의 블록은 삭제한다. 그림 2(a)는 전체 블록체인을 가지고 있는 기존 블록체인(conventional blockchain)을 보여준다. 여기서 h와 t는 블록체인의 헤더부(header part)와 거래부(transaction part)를 각각 나타내고, 아래 첨자는 블록의 생성순서를 나타낸다. 기존 블록체인은 그림 2(a)과 같이 최초 블록(genesis block)부터 최근 블록까지 전체 블록체인을 포함한다. 그림에서 화살표는 이전 블록의 블록해시를 현재 블록에 포함시켜서 체인으로 연결시킨 것을 나타낸다. 만일 새 노드가 비트코인 네트워크에 참여한다면, 이 노드는 이 그림 2(a)과 같이 전체 블록체인을 다운로드받기 위해 IBD를 진행해야 한다. 그리고 그림 2(b)는 특정 개수의 최근 블록체인을 저장한 부분 삭제 블록체인(pruned blockchain)을 보여준다. 부분 삭제 노드는 그림 2(b)와 같이 특정 개수의 최신 블록만을 가지고 있다.[7] 그림 2(b)의 경우, 이 노드는 m번째 블록부터 최신 블록인 n번째 블록을 포함하고, n — m은 일정한 상수이다. 노드는 전체 블록체인을 저장하여 검증하고 UTXO set을 완성한 후, 부분 삭제 노드가 될 수 있다. 하지만 이 경우, 이 노드는 새 노드가 네트워크에 참여하도록 전체 블록체인을 제공할 수는 없다. <h3>4 . 초기 UTXO 다운로드(Initial UTXO Download) 방법</h3> 비트코인에서 거래의 전체 상태인 UTXO set은 채굴의 편의를 위해서 메모리에 저장된다. 전체 UTXO set의 크기는 2017년 5월 20일 현재 약 1.9 GiB이었고, 당시 블록체인 크기의 약 1.6%에 불과할 정도로 작다.[10] 블록체인이 거래에 대한 추가전용 DB이기 때문에, 이 비율은 앞으로 점점 작아질 것이다. 이런 이유 때문에, 새 노드가 비트코인 네트워크에 처음 접속하여 IBD를 통해 전체 블록체인을 전송받는 것보다 전체 UTXO set을 전송받는 것이 더 좋은 방법이다. 즉, 만일 새 노드가 초기 동기화 동안 올바른 전체 UTXO set를 이웃 노드로부터 다운받을 수 있다면, 전체 블록체인을 다운받지 않아도 된다. 하지만, 공개 블록체인(public blockchain)에서 노드들은 서로를 믿지 못하는 비신뢰 특성 때문에, 새 노드가 이웃 노드들로부터 UTXO 세트를 직접 다운받는 것은 안전하지 않다. 왜냐하면, 새 노드가 다운로드 받은 UTXO set이 올바른 것인지를 판단할 수 없기 때문이다. 이를 해결하기 위해서, UTXO 확정 (UTXO commitments) 방법이 이미 제안되었고, 이를 경량 지갑(light wallet)에 적용하려는 여러 가지 제안들이 있었다.[11–13] 이것은 전체 UTXO set를 머클트리(merkle tree)로 구성하고, 이것의 루트 해시를 블록에 기록하는 방법이다. 그리고 새 노드는 전체 UTXO set을 전송받고 이를 머클트리로 구성하여 이것의 루트 해시를 구하고 블록에 기록된 루트해시를 비교하여 안전성을 검증한다. 즉 UTXO 확정은 p2p 네트워크에서 다른 노드로부터 전파 받은 UTXO set이 올바른지를 확인하는 데 사용할 수 있다. 이것을 초기 UTXO 동기화(initial UTXO download, IUD)라 부르자. IUD의 장점은 다음과 같다. 1) IUD는 기존의 IBD를 통해 전체 블록체인을 다운받는 방법보다 전송받는 데이터가 매우 작다. 이 때문에 새 노드가 매우 빨리 초기 동기화를 시킬 수 있다. 2) 기존의 IBD는 서명의 검증에 많은 CPU 자원이 필요하다. 하지만, IUD는 모든 블록을 검증하는 대신에, 전체 UTXO set을 검증하기 때문에 검증을 위한 계산량 및 시간을 크게 줄일 수 있다. 그렇지만 IUD는 노드의 독립성을 일부 포기한 것으로 보일 수 있다. 왜냐하면 기존의 IBD는 비신뢰 특성 때문에 새 노드가 전체 블록체인을 전송받아 이것에 포함된 모든 거래를 독립적으로 검증하기 때문이다. 하지만 비트코인에서 IUD가 안전한 이유는 공격자가 최근의 블록체인을 새로 만들 때 상당한 비용이 들기 때문이다. 즉, 새 노드가 IUD를 통해 UTXO set를 전송받은 후, 그가 몇 개의 최신 블록을 연속으로 검증하면 안전한 UTXO 세트를 전송받았는지 쉽게 검증할 수 있다. 그리고 비트코인 지갑은 거래가 포함된 블록 이후 6개의 새 블록이 생성되면 이체가 가능하다. 이와 유사하게, 예로 들면, 새 노드는 IUD 동안 먼저 최신 블록과 UTXO set을 전송받고 이를 검증한 후, 연속으로 5개의 새로운 블록을 전파 받아서 이 UTXO set를 계속 검증한다. 이 과정을 모두 통과할 경우 새 노드는 이 UTXO set을 사용할 수 있다. 블록에 UTXO set의 루트 해시를 기록하는 방법은 아래와 같을 수 있다. 예를 들면, 노드들은 기존 방법대로 난이도 조건을 만족하는 블록해시를 먼저 찾은 후에, UTXO set의 머클트리를 구성하여 그것의 루트 해시를 계산한다. 그리고 기존 블록과 동일하게 블록을 만들고, 추가로 머클트리의 루트 해시를 블록에 기록한다. 또한 이 루트 해시와 블록해시로 새로운 해시를 만들어 이를 블록에 추가할 수 있다. <h3>5 . 기존 트리의 정렬을 이용한 정렬된 머클트리(sorted merkle tree)</h3> 그림 3(a)에 보인 기존 머클트리를 먼저 살펴보자. 이 그림의 기존 머클트리는 이진트리(binary tree)이고, 데이터인 UTXO가 모두 말단 노드(leaf nodes)에 위치한다. 그리고 이것의 내부노드(interior nodes)는 두 자식 노드를 연결하여 계산한 해시로 구성하고 루트 해시와 연결된다.[14] 그림 3에서 u와 h는 각각 UTXO와 해시(hash)를 나타내고, 아래첨자는 이들의 이름을 가리킨다. 내부노드의 해시를 구하는 예를 들면, 2번 노드의 해시는 h2 = hf(h4 || h5)로 계산한다. 이때, hf는 해시함수이고, ||는 연결(concatenation) 연산자이다. 따라서 기존 머클트리에서 루트 노드의 루트 해시(h1)는 단말노드에 위치한 데이터인 모든 UTXO에 의존하게 된다. 이 때문에, 만일 데이터가 하나라도 바뀌면, 해당 노드로부터 루트 노드로 이어지는 노드들의 해시가 바뀌고 결국 루트 해시(h1)가 바뀐다. <center></center> 그림 3. (a) 기존 머클트리. 머클트리는 말단 노드에 모든 UTXO가 위치하고, 내부 노드는 두 개의 자식 노드의 해시로 구성된 이진트리이다. (b) 우리가 제안한 머클트리. 머클트리는 모든 UTXO를 기존의 이진트리로 정렬하고, 그 후에 노드의 해시를 구한다. 이때, 내부 노드는 해시를 포함한다. 이 경우, 내부노드에 UTXO를 포함하기 때문에 머클트리의 노드의 개수는 기존 머클트리 대비 약 1/2로 작아진다. 2017년 5월 20일 현재 UTXO set의 크기는 약 1.9 GiB이고, 이것은 약 5천4백만 개의 UTXO를 포함한다.[15] 이것은 앞으로 더 증가할 수밖에 없다. 그리고 전체 UTXO set를 머클트리로 구성하고 이것의 루트 해시를 구하는 것은 많은 해시 계산이 필요하다. 하지만 비트코인에서 새 블록이 생성될 때마다, UTXO set에 새로 생성된 UTXO를 삽입하고 소비한 UTXO를 삭제한다. 새 블록마다, UTXO set의 머클트리를 업데이트하고 내부노드의 해시를 다시 계산하는 것은 너무 많은 해시 계산이 발생하는 등의 문제가 있었다. 이런 이유로 아직까지 비트코인에 IUD를 적용하지 못하고 있다[13]. 더불어 기존 머클트리는 모든 데이터, 즉 전체 UTXO가 단말 노드에 위치하기 때문에, UTXO가 정렬되어 있지 않는다. 이 때문에, 기존 머클트리는 특정 데이터의 비존재 증명에 이용할 수 없었다.[16] 이를 해결하기 위해, 우리는 기존 이진트리를 이용한 정렬된 머클트리(sorted merkle tree)를 제안한다. 그림 1(b)는 우리가 제안한 새로운 머클트리를 보여준다. 이 머클트리는 기존의 이진트리를 이용하여 데이터인 UTXO를 모든 노드에 정렬시키고, 그 후에 내부노드의 해시를 계산한다. 이 때문에, 우리가 제안한 머클트리는 AVL 트리 또는 레드-블랙 트리(red-black tree) 등과 같은 시간 복잡도가 O(log n)인 균형 이진트리(balanced binary tree) 등을 사용할 수 있다. 구체적으로, 우리가 제안한 머클트리는 새 블록이 생성될 때마다 먼저 기존 UTXO의 이진트리에 사용된 UTXO 및 새로 생성된 UTXO를 삭제 및 삽입하고, 그 후에 해당하는 노드의 해시를 부가적으로 계산한다. 구체적으로, 그림 3(b)에서 말단노드의 해시는 h2와 h3이고, 이들은 hself = hf(uleft || uright || uself)로 구한다. 예를 들면, 2번 노드의 해시(h2)는 u4, u5와 u2를 연결하여 구한다. 그리고 만일 자식 노드에 해시가 존재할 경우, 이 노드의 해시는 자식노드의 해시와 자신의 UTXO를 연결하여 구한다. 예를 들면, 루트 해시(h1)는 h2, h3와 u1을 연결하여 구한다. 이 머클트리의 장점은 다음과 같다. 첫 번째, 이것은 내부노드에 데이터를 저장하고 있기 때문에 기존 머클트리에 비해서 이진트리의 노드 개수를 약 1/2로 줄인다. 이 때문에 기존 머클트리에 비해 해시의 개수가 약 절반으로 줄어든다. 즉 데이터의 업데이트 시에 해시 계산의 개수가 줄어든다. 두 번째, 제안한 머클트리는 기존 이진트리로 데이터인 UTXO를 먼저 정렬하고, 이 때문에 이것은 특정 UTXO의 존재 여부를 쉽게 증명할 수 있다. 따라서 경량 지갑에서 특정 거래의 존재 여부에 대한 검증이 가능하다. 우리의 머클트리에서 데이터의 비존재 증명은 비존재하는 데이터의 양 옆에 있는 데이터가 바로 이웃하고 있는지를 증명하면 가능하다. [16] 참고로, 경량지갑에서 거래의 존재 증명은 아래와 같이 확인할 수 있다. 예를 들면, 그림 3(b)의 제안한 머클트리에서 u2의 검증은 u4, u5, u2, h3가 필요하다. 이에 비해 그림 3(a)의 기존 머클트리에서 u2의 검증은 u1, u2, h5, h3가 필요하다. 더불어, 기존 머클트리는 각 데이터, 즉 UTXO를 검증할 때, 단 하나의 이웃 데이터를 포함한다. 하지만 우리가 제안한 머클트리는 내부 노드에 데이터를 포함하기 때문에 각 데이터를 검증할 때, 기존 머클트리에 비해서 더 많은 데이터를 포함해야 한다. 하지만, 비트코인은 공개 블록체인이므로, 특정 거래의 검증 과정에서 특정 utxo를 노출하는 것은 전혀 문제가 되지 않는다. 그리고 이더리움은 UTXO 대신에 계정(accounts)을 가지고 있고, 머클 페트리샤 트리(merkle patricia tree)에 저장한다.[17] 비슷하게 코스모스 코인도 계정을 가지고 있고, 이를 머클 IAVL+ 트리(merkle IAVL+ tree)에 저장된다.[18] 하지만, 이들도 모두 단말노드에 계정 데이터를 저장한다. 따라서 이더리움과 같이 계정의 전체 상태를 가진 암호화폐에도 우리가 제안한 정렬된 머클트리 구조를 적용할 수 있다. <h3>6 . 결론</h3> 본 논문은 비트코인에서 초기 동기화 시에 UTXO 확정(commitments)을 이용하기 위해, 머클트리의 노드의 개수를 약 1/2로 줄인 정렬된 머클트리(sorted merkle tree)를 제안한다. 이 머클트리를 사용하면, 매 블록마다 삭제 및 추가되는 UTXO에 때문에 발생하는 머클트리에서 변화된 전체 해시 계산 개수를 줄일 수 있다. 이 때문에 전체 블록체인을 다운받는 초기 블록 다운로드(IBD) 대신에, UTXO set을 다운로드받는 초기 UTXO 다운로드(IUD)를 사용할 수 있을 것으로 추측한다. 결론적으로 우리는 IUD를 사용할 수 있도록, 머클트리에서 노드의 개수를 기존 머클트리에 비해서 약 1/2로 줄인 새로운 머클트리 구조를 제안한다. </h3>References</h3> [1] Satoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System.” https://bitcoin.org/bitcoin.pdf (2009) [2] No Auther, “Bitcoin Core.” https://en.wikipedia.org/wiki/Bitcoin_Core (accessed 3 April 2018) [3] No Auther, “Scalability.” Bitcoin Wikipedia https://en.bitcoin.it/wiki/Scalability (accessed 3 April 2018) [4] No Auther, “Block Chain Overview.” https://bitcoin.org/en/developer-guide#block-chain-overview [5] Aleksandr Bulkin, “Explaining blockchain — how proof of work enables trustless consensus.” https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845 [6] No Auther, “Initial Block Download.” https://bitcoin.org/en/developer-guide#initial-block-download [7] No Auther, “Block file pruning.” https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning [8] No Auther, ”Chain Reorganization.” https://en.bitcoin.it/wiki/Chain_Reorganization [9] No Auther, “Full Node.” https://bitcoin.org/en/developer-guide#full-node [10] No Auther. “Unspent transaction output set.” Statoshi.info http://statoshi.info/dashboard/db/unspent-transaction-output-set (accessed 5 April 2017) [11] Andrew Miller. “Storing UTXOs in a Balanced Merkle Tree.” Bitcointalk https://bitcointalk.org/index.php?topic=101734.0 [12] No Auther. “Pettycoin Revisted Part I: Utxo Commitments.” http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html [13] Peter Todd. “Making UTXO Set Growth Irrelevant With Low-Latency Delayed TXO Commitments.” https://petertodd.org/2016/delayed-txo-commitments [14] No Auther. “Merkle tree.” https://en.wikipedia.org/wiki/Merkle_tree [15] No Auther. “Number of Unspent Transaction Outputs.” https://blockchain.info/charts/utxo-count?timespan=all [16] No Auther. “sorted-merkle-tree-issue693.” https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0 [17] Gavin Wood. “Ethereum: A secure decentralized generalized transaction ledger” No Publisher (2014) http://gavwood.com/paper.pdf [18] Jae Kwon and Ethan Buchman. “Cosmos whitepaper.” Cosmos https://cosmos.network/whitepaper (accessed 3 April 2018) |
| json metadata | {"tags":["blockchain","bitcoin","merkle","tree","utxo"],"image":["https://cdn.steemitimages.com/DQmehiKmBH4gwbnAhWymQ3iNo88CxWizUyJWtp3vPCCfqDn/fig1.png","https://cdn.steemitimages.com/DQmWvT63aneVv51GZLvb3zgCnJKCKNutnRTHx3bYAaMtTvP/fig2.png","https://cdn.steemitimages.com/DQmWKaoaCzAMgSaczWANdsSATJKjn4uqc59nCQUDCfTnMFE/fig3.png"],"links":["https://bitcoin.org/bitcoin.pdf","https://en.wikipedia.org/wiki/Bitcoin_Core","https://en.bitcoin.it/wiki/Scalability","https://bitcoin.org/en/developer-guide#block-chain-overview","https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845","https://bitcoin.org/en/developer-guide#initial-block-download","https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning","https://en.bitcoin.it/wiki/Chain_Reorganization","https://bitcoin.org/en/developer-guide#full-node","http://statoshi.info/dashboard/db/unspent-transaction-output-set","https://bitcointalk.org/index.php?topic=101734.0","http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html","https://petertodd.org/2016/delayed-txo-commitments","https://en.wikipedia.org/wiki/Merkle_tree","https://blockchain.info/charts/utxo-count?timespan=all","https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0","http://gavwood.com/paper.pdf","https://cosmos.network/whitepaper"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #32114917/Trx b10f7872da0c1cc7f0e9c4cc2d78d8e1c441825c |
View Raw JSON Data
{
"trx_id": "b10f7872da0c1cc7f0e9c4cc2d78d8e1c441825c",
"block": 32114917,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-04-17T05:46:00",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "blockchain",
"author": "loum",
"permlink": "utxo-set-sorted-merkle-tree",
"title": "비트코인에서 UTXO set을 초기 동기화하기 위한 정렬된 머클트리(sorted merkle tree)",
"body": "<center> <h5>김성일 </h5></center>\n<br>\n\n/* 이 글은 2017년 7월 경에 작성했던 것이라서, 일부 내용은는이 날짜를 기준으로 작성되었다 */\n<br>\n\n<center><h5>Abstract.</h5> </center>\n비트코인은 다른 노드들을 믿지 못하는 비신뢰 특성 때문에, 새로 블록생성에 참여하는 새 노드는 초기 블록체인 동기화(Initial Blockchain Download, IBD)를 통해 전체 블록체인을 전송받고 이를 검증해야 한다. 하지만, 이 방법은 로드 데이터인 블록체인 전체를 다운받아야 하기 때문에 여러 가지 문제를 발생시킨다. 이 논문은 이를 해결하기 위한 방법 중에 새 노드가 전체 블록체인 대신에, 거래의 전체 상태인 UTXO set를 다운로드받는 UTXO 확정(UTXO commitments) 방법을 살펴본다. 하지만 이 방법은 현재 여러 문제로 적용되지 못하고 있다. 이를 해결하기 위해, 우리는 기존 트리를 이용하는 새로운 정렬된 머클트리(sorted merkle tree)를 제안한다. 이것은 UTXO set을 머클트리로 만들 때 기존의 머클트리에 비해 노드의 개수를 약 1/2로 줄일 수 있다.\n\n<h3>1 . 서론</h3>\n비트코인(Bitcoin)과 같은 블록체인 기술은 신뢰하는 중앙기관이 없이 분산된 다수의 노드들이 피어-투-피어(peer-to-peer, p2p) 네트워크를 구성하여 데이터베이스(DB)인 블록체인을 관리하는 DB 기술이다.[1] 또한 이것은 각 노드들이 동일한 블록체인을 보관하도록 복제하는 복제 시스템(replication system)이다. P2P 네트워크를 구성하는 노드들은 작업증명(proof-of-work, PoW) 또는 지분증명(proof-of-stake, PoS) 합의 알고리즘을 통해서 어느 노드가 새로운 블록을 생성할지를 결정한다. 즉, 비트코인 네트워크에는 합의 알고리즘을 통해 노드들이 하나의 주체인(main chain)을 유지하여 이중지출 방지한다. 따라서 합의 알고리즘이 이중지출(doubling spending)을 막는 핵심적인 역할을 하고, 블록체인 자체는 추가 전용 데이터베이스(append-only database)에 불과하다.\n\n블록체인은 추가 전용 DB이기 때문에, 그 크기가 선형적으로 계속 늘어날 수밖에 없다. 예로, 2017년 5월 20일(이하, ‘현재’라고 칭함)에 비트코인의 블록체인 사이즈는 116 GiB이었고, 최근 1년 동안 블록체인 사이즈는 47 GiB가 증가했다. 현재 비트코인 코어(bitcoin core)에서 블록 사이즈는 1 MiB로 고정되어 있고,[2] 평균적으로 10분에 한 번씩 블록을 생성하므로 1년 동안 추가될 수 있는 블록 사이즈는 1 MiB * 6 * 24 * 365 , 즉52.56 GiB이다. 현재 비트코인 네트워크의 예상 최대 거래 처리량은 초당 7거래로 알려져 있지만[3], 현재 평균적으로 약 3~4 거래를 처리하고 있다. 이에 반해서 비자카드에서 거래의 평균 초당 처리량은 약 2,000 거래이며, 최대(peak) 처리량은 초당 약 56,000 거래로 알려졌다.[3] 따라서 비트코인의 현재 거래 처리량은 매우 작다. 이 때문에, 만일 비트코인의 초당 거래 처리량이 크게 증가한다면, 블록체인의 사이즈 문제는 더욱 심각해질 것이다. 또한 블록체인은 추가 전용 DB이기 때문에 그 크기가 너무 빠르게 증가하는 피할 수 없는 문제를 가진다.\n\n<h3>2 . 비트코인에서 거래 및 거래의 전체 상태</h3>\n비트코인에서 거래(transaction)는 하나 이상의 입력과 출력(one or more of inputs and outputs)으로 구성된다. 비트코인에서 거래의 출력(outputs)은 단 한 번만 입력(input)에서 소비될 수 있기 때문에, 소비되지 않은 거래 출력(unspent transaction outputs, UTXOs)과 이미 소비된 거래 출력(spent transaction outputs, STXOs)으로 구분된다. 구체적으로, 입력은 소유자가 소비할 수 있는 UTXO와 디지털 서명과 공개키로 구성되고, 출력은 새로운 UTXO를 생성하기 위한 지갑주소와 이체할 코인 개수로 이루어진다. 따라서 거래가 유효하려면, 입력에 STXO가 아닌 UTXO만 사용하여 소비해야 한다.[4] 결국 비트코인에서 거래는 UTXO를 소비하여 STXO로 만들고 새로운 UTXO를 생성하는 과정이다.[4] 비트코인 지갑은 일반적으로 거래의 입력과 출력을 디지털 서명하여 네트워크에 전파한다. 즉 비트코인은 소유권의 증거로 디지털 서명을 제공하는 서명 기반의 소유권 이전 시스템이다.\n\n그림 1은 비트코인의 주요 DB인 맴풀(mempool), 블록체인 그리고 UTXO set을 보여준다. 여기서, 맴풀은 블록에 기록되기를 기다리는 미승인 거래(unconfirmed Tx)를 저장하는 DB이고, 이 때문에 특정 거래가 블록에 기록이 되면 이 거래는 맴풀에서 삭제된다. UTXO set는 미래에 사용할 수 있는 출력인 모든 UTXO를 모아놓은 DB이고, 이 때문에 새 블록이 전파될 때마다 이것의 내용이 바뀐다. 구체적으로, 새 블록이 전파될 때마다 이 블록에 포함된 거래에 의해서 STXO, 즉 소비한 UTXO를 UTXO set에서 제거하고, 새로 발생한 UTXO를 이것에 추가하여 내용을 업데이트한다. 따라서 UTXO set은 전체 계정 상태와 같이 거래의 전체 상태를 관리한다. 여기서 중요한 것은 “공개 블록체인(public blockchain)의 비신뢰 특성 때문에, 분산된 노드들이 블록체인을 통해서 모든 거래를 독립적으로 검증하여 거래의 전체 상태인 UTXO set를 완성하는 것이다.”는 것이다. 따라서 비트코인은 노드 관점에서 블록체인을 복제하여 이를 동기화하고, 이를 통해서 모든 거래를 독립적으로 검증하여 전체 상태인 UTXO 세트를 완성하는 것이다. 이는 비트코인의 비신뢰(trustless) 특성 때문이다. 결국 비트코인의 모든 상태는 UTXO set와 맴풀이 가지고 있다. 이때 UTXO 세트는 전체 상태인 모든 UTXO를 관리하고, 맴풀은 블록체인에 기록되기를 기다리는 모든 미승인 거래(unconfirmed Tx)를 관리한다.\n\n<center></center>\n그림1. 비트코인의 주요 데이터베이스. 비트코인에서 UTXO set은 거래의 전체 상태를 가진 DB이고, 블록체인은 추가전용의 로그 DB이다. 이 둘은 블록에 포함된 승인된 거래(confirmed Tx)를 관리한다. 맴풀은 블록에 포함되기를 기다리는 미승인 거래들(unconfirmed Tx)을 관리하는 DB이다.\n비트코인은 분산된 비신뢰 합의 알고리즘(distributed trustless consensus algorithm)이기 때문에 노드는 다른 노드들을 믿을 수 없다.[5] 이 때문에 노드 자신이 전체 블록체인을 독립적으로 검증해야 한다. 이것은 블록이 디지털 서명이 포함된 거래와 다른 블록과 체인으로 연결되어 있기 때문에 가능한 것이다. 이 때문에, 새 노드가 비트코인 네트워크에 처음 접속하면, 그는 전체 블록체인을 반드시 다운로드 받으며, 이를 초기 블록체인 동기화(Initial Block Download, IBD)라고 부른다[6]. 즉 IBD는 새 노드가 비신뢰 네트워크에서 독립성을 유지하기 위해 블록체인 전체를 다운받아 모든 거래를 검증하고, 이를 통해서 올바른 UTXO 세트를 독립적으로 완성하기 위한 목적으로 사용한다. 참고로, 비트코인 코어(bitcoin core) 0.10.0은 노드가 144개의 블록, 즉 약 24시간 이상 동안 네트워크에 접속하지 못하면, IBD를 다시 시작하여 블록체인을 동기화시킨다[6].\n\n<h3>3 . 최근의 블록체인만 포함한 부분 삭제 노드(pruned node)</h3>\n부분 삭제 노드(pruned node)는 전체 블록체인을 저장하지 않는 노드를 말한다.[7] 구체적으로 말하면, 새 노드가 전체 블록체인을 다운받고 이를 검증한 후, UTXO set을 완성한다. 그 후 이 노드는 특정 개수의 최근 블록체인만을 가지고 있고, 그전의 블록체인을 삭제한 부분 삭제 노드(pruned node)가 될 수 있다[7]. 이 노드는 전체 블록체인을 검증하여 거래의 상태인 UTXO set를 완성했기 때문에, 전체 블록체인 대신에 최신의 일부 블록체인만을 저장하고 있어도 올바로 동작한다. 따라서 만일 자신의 노드만 생각한다면, 노드가 일단 UTXO set을 완성한 후에 전체 블록체인을 가지고 있을 필요는 없다. 이 노드는 단지 블록체인에 포크가 발생하였을 경우를 대비하여 최근의 몇 개 블록만 저장해도 된다.[8]. 노드들이 전체 블록체인을 가지고 있는 목적은 새 노드들이 블록생산(채굴)에 참여할 수 있도록 이들에게 전체 블록체인을 제공하는 위한 것이다[9].\n\n<center></center>\n그림 2. (a) 전체 헤더부와 거래부를 저장하는 기존 블록체인, (b) 특정 개수의 최근 블록체인을 저장하는 부분 삭제 블록체인(pruned blockchain). 여기서, 부분 삭제 블록체인은 노드가 일정한 개수의 최근 블록을 가지고 있고, 그 이외의 블록은 삭제한다.\n\n그림 2(a)는 전체 블록체인을 가지고 있는 기존 블록체인(conventional blockchain)을 보여준다. 여기서 h와 t는 블록체인의 헤더부(header part)와 거래부(transaction part)를 각각 나타내고, 아래 첨자는 블록의 생성순서를 나타낸다. 기존 블록체인은 그림 2(a)과 같이 최초 블록(genesis block)부터 최근 블록까지 전체 블록체인을 포함한다. 그림에서 화살표는 이전 블록의 블록해시를 현재 블록에 포함시켜서 체인으로 연결시킨 것을 나타낸다. 만일 새 노드가 비트코인 네트워크에 참여한다면, 이 노드는 이 그림 2(a)과 같이 전체 블록체인을 다운로드받기 위해 IBD를 진행해야 한다. 그리고 그림 2(b)는 특정 개수의 최근 블록체인을 저장한 부분 삭제 블록체인(pruned blockchain)을 보여준다. 부분 삭제 노드는 그림 2(b)와 같이 특정 개수의 최신 블록만을 가지고 있다.[7] 그림 2(b)의 경우, 이 노드는 m번째 블록부터 최신 블록인 n번째 블록을 포함하고, n — m은 일정한 상수이다. 노드는 전체 블록체인을 저장하여 검증하고 UTXO set을 완성한 후, 부분 삭제 노드가 될 수 있다. 하지만 이 경우, 이 노드는 새 노드가 네트워크에 참여하도록 전체 블록체인을 제공할 수는 없다.\n\n<h3>4 . 초기 UTXO 다운로드(Initial UTXO Download) 방법</h3>\n비트코인에서 거래의 전체 상태인 UTXO set은 채굴의 편의를 위해서 메모리에 저장된다. 전체 UTXO set의 크기는 2017년 5월 20일 현재 약 1.9 GiB이었고, 당시 블록체인 크기의 약 1.6%에 불과할 정도로 작다.[10] 블록체인이 거래에 대한 추가전용 DB이기 때문에, 이 비율은 앞으로 점점 작아질 것이다. 이런 이유 때문에, 새 노드가 비트코인 네트워크에 처음 접속하여 IBD를 통해 전체 블록체인을 전송받는 것보다 전체 UTXO set을 전송받는 것이 더 좋은 방법이다. 즉, 만일 새 노드가 초기 동기화 동안 올바른 전체 UTXO set를 이웃 노드로부터 다운받을 수 있다면, 전체 블록체인을 다운받지 않아도 된다. 하지만, 공개 블록체인(public blockchain)에서 노드들은 서로를 믿지 못하는 비신뢰 특성 때문에, 새 노드가 이웃 노드들로부터 UTXO 세트를 직접 다운받는 것은 안전하지 않다. 왜냐하면, 새 노드가 다운로드 받은 UTXO set이 올바른 것인지를 판단할 수 없기 때문이다.\n\n이를 해결하기 위해서, UTXO 확정 (UTXO commitments) 방법이 이미 제안되었고, 이를 경량 지갑(light wallet)에 적용하려는 여러 가지 제안들이 있었다.[11–13] 이것은 전체 UTXO set를 머클트리(merkle tree)로 구성하고, 이것의 루트 해시를 블록에 기록하는 방법이다. 그리고 새 노드는 전체 UTXO set을 전송받고 이를 머클트리로 구성하여 이것의 루트 해시를 구하고 블록에 기록된 루트해시를 비교하여 안전성을 검증한다. 즉 UTXO 확정은 p2p 네트워크에서 다른 노드로부터 전파 받은 UTXO set이 올바른지를 확인하는 데 사용할 수 있다. 이것을 초기 UTXO 동기화(initial UTXO download, IUD)라 부르자. IUD의 장점은 다음과 같다. 1) IUD는 기존의 IBD를 통해 전체 블록체인을 다운받는 방법보다 전송받는 데이터가 매우 작다. 이 때문에 새 노드가 매우 빨리 초기 동기화를 시킬 수 있다. 2) 기존의 IBD는 서명의 검증에 많은 CPU 자원이 필요하다. 하지만, IUD는 모든 블록을 검증하는 대신에, 전체 UTXO set을 검증하기 때문에 검증을 위한 계산량 및 시간을 크게 줄일 수 있다.\n\n그렇지만 IUD는 노드의 독립성을 일부 포기한 것으로 보일 수 있다. 왜냐하면 기존의 IBD는 비신뢰 특성 때문에 새 노드가 전체 블록체인을 전송받아 이것에 포함된 모든 거래를 독립적으로 검증하기 때문이다. 하지만 비트코인에서 IUD가 안전한 이유는 공격자가 최근의 블록체인을 새로 만들 때 상당한 비용이 들기 때문이다. 즉, 새 노드가 IUD를 통해 UTXO set를 전송받은 후, 그가 몇 개의 최신 블록을 연속으로 검증하면 안전한 UTXO 세트를 전송받았는지 쉽게 검증할 수 있다. 그리고 비트코인 지갑은 거래가 포함된 블록 이후 6개의 새 블록이 생성되면 이체가 가능하다. 이와 유사하게, 예로 들면, 새 노드는 IUD 동안 먼저 최신 블록과 UTXO set을 전송받고 이를 검증한 후, 연속으로 5개의 새로운 블록을 전파 받아서 이 UTXO set를 계속 검증한다. 이 과정을 모두 통과할 경우 새 노드는 이 UTXO set을 사용할 수 있다.\n\n블록에 UTXO set의 루트 해시를 기록하는 방법은 아래와 같을 수 있다. 예를 들면, 노드들은 기존 방법대로 난이도 조건을 만족하는 블록해시를 먼저 찾은 후에, UTXO set의 머클트리를 구성하여 그것의 루트 해시를 계산한다. 그리고 기존 블록과 동일하게 블록을 만들고, 추가로 머클트리의 루트 해시를 블록에 기록한다. 또한 이 루트 해시와 블록해시로 새로운 해시를 만들어 이를 블록에 추가할 수 있다.\n\n<h3>5 . 기존 트리의 정렬을 이용한 정렬된 머클트리(sorted merkle tree)</h3>\n그림 3(a)에 보인 기존 머클트리를 먼저 살펴보자. 이 그림의 기존 머클트리는 이진트리(binary tree)이고, 데이터인 UTXO가 모두 말단 노드(leaf nodes)에 위치한다. 그리고 이것의 내부노드(interior nodes)는 두 자식 노드를 연결하여 계산한 해시로 구성하고 루트 해시와 연결된다.[14] 그림 3에서 u와 h는 각각 UTXO와 해시(hash)를 나타내고, 아래첨자는 이들의 이름을 가리킨다. 내부노드의 해시를 구하는 예를 들면, 2번 노드의 해시는 h2 = hf(h4 || h5)로 계산한다. 이때, hf는 해시함수이고, ||는 연결(concatenation) 연산자이다. 따라서 기존 머클트리에서 루트 노드의 루트 해시(h1)는 단말노드에 위치한 데이터인 모든 UTXO에 의존하게 된다. 이 때문에, 만일 데이터가 하나라도 바뀌면, 해당 노드로부터 루트 노드로 이어지는 노드들의 해시가 바뀌고 결국 루트 해시(h1)가 바뀐다.\n\n<center></center>\n그림 3. (a) 기존 머클트리. 머클트리는 말단 노드에 모든 UTXO가 위치하고, 내부 노드는 두 개의 자식 노드의 해시로 구성된 이진트리이다. (b) 우리가 제안한 머클트리. 머클트리는 모든 UTXO를 기존의 이진트리로 정렬하고, 그 후에 노드의 해시를 구한다. 이때, 내부 노드는 해시를 포함한다. 이 경우, 내부노드에 UTXO를 포함하기 때문에 머클트리의 노드의 개수는 기존 머클트리 대비 약 1/2로 작아진다.\n\n2017년 5월 20일 현재 UTXO set의 크기는 약 1.9 GiB이고, 이것은 약 5천4백만 개의 UTXO를 포함한다.[15] 이것은 앞으로 더 증가할 수밖에 없다. 그리고 전체 UTXO set를 머클트리로 구성하고 이것의 루트 해시를 구하는 것은 많은 해시 계산이 필요하다. 하지만 비트코인에서 새 블록이 생성될 때마다, UTXO set에 새로 생성된 UTXO를 삽입하고 소비한 UTXO를 삭제한다. 새 블록마다, UTXO set의 머클트리를 업데이트하고 내부노드의 해시를 다시 계산하는 것은 너무 많은 해시 계산이 발생하는 등의 문제가 있었다. 이런 이유로 아직까지 비트코인에 IUD를 적용하지 못하고 있다[13]. 더불어 기존 머클트리는 모든 데이터, 즉 전체 UTXO가 단말 노드에 위치하기 때문에, UTXO가 정렬되어 있지 않는다. 이 때문에, 기존 머클트리는 특정 데이터의 비존재 증명에 이용할 수 없었다.[16]\n\n이를 해결하기 위해, 우리는 기존 이진트리를 이용한 정렬된 머클트리(sorted merkle tree)를 제안한다. 그림 1(b)는 우리가 제안한 새로운 머클트리를 보여준다. 이 머클트리는 기존의 이진트리를 이용하여 데이터인 UTXO를 모든 노드에 정렬시키고, 그 후에 내부노드의 해시를 계산한다. 이 때문에, 우리가 제안한 머클트리는 AVL 트리 또는 레드-블랙 트리(red-black tree) 등과 같은 시간 복잡도가 O(log n)인 균형 이진트리(balanced binary tree) 등을 사용할 수 있다. 구체적으로, 우리가 제안한 머클트리는 새 블록이 생성될 때마다 먼저 기존 UTXO의 이진트리에 사용된 UTXO 및 새로 생성된 UTXO를 삭제 및 삽입하고, 그 후에 해당하는 노드의 해시를 부가적으로 계산한다. 구체적으로, 그림 3(b)에서 말단노드의 해시는 h2와 h3이고, 이들은 hself = hf(uleft || uright || uself)로 구한다. 예를 들면, 2번 노드의 해시(h2)는 u4, u5와 u2를 연결하여 구한다. 그리고 만일 자식 노드에 해시가 존재할 경우, 이 노드의 해시는 자식노드의 해시와 자신의 UTXO를 연결하여 구한다. 예를 들면, 루트 해시(h1)는 h2, h3와 u1을 연결하여 구한다. 이 머클트리의 장점은 다음과 같다. 첫 번째, 이것은 내부노드에 데이터를 저장하고 있기 때문에 기존 머클트리에 비해서 이진트리의 노드 개수를 약 1/2로 줄인다. 이 때문에 기존 머클트리에 비해 해시의 개수가 약 절반으로 줄어든다. 즉 데이터의 업데이트 시에 해시 계산의 개수가 줄어든다. 두 번째, 제안한 머클트리는 기존 이진트리로 데이터인 UTXO를 먼저 정렬하고, 이 때문에 이것은 특정 UTXO의 존재 여부를 쉽게 증명할 수 있다. 따라서 경량 지갑에서 특정 거래의 존재 여부에 대한 검증이 가능하다. 우리의 머클트리에서 데이터의 비존재 증명은 비존재하는 데이터의 양 옆에 있는 데이터가 바로 이웃하고 있는지를 증명하면 가능하다. [16] 참고로, 경량지갑에서 거래의 존재 증명은 아래와 같이 확인할 수 있다. 예를 들면, 그림 3(b)의 제안한 머클트리에서 u2의 검증은 u4, u5, u2, h3가 필요하다. 이에 비해 그림 3(a)의 기존 머클트리에서 u2의 검증은 u1, u2, h5, h3가 필요하다.\n\n더불어, 기존 머클트리는 각 데이터, 즉 UTXO를 검증할 때, 단 하나의 이웃 데이터를 포함한다. 하지만 우리가 제안한 머클트리는 내부 노드에 데이터를 포함하기 때문에 각 데이터를 검증할 때, 기존 머클트리에 비해서 더 많은 데이터를 포함해야 한다. 하지만, 비트코인은 공개 블록체인이므로, 특정 거래의 검증 과정에서 특정 utxo를 노출하는 것은 전혀 문제가 되지 않는다.\n\n그리고 이더리움은 UTXO 대신에 계정(accounts)을 가지고 있고, 머클 페트리샤 트리(merkle patricia tree)에 저장한다.[17] 비슷하게 코스모스 코인도 계정을 가지고 있고, 이를 머클 IAVL+ 트리(merkle IAVL+ tree)에 저장된다.[18] 하지만, 이들도 모두 단말노드에 계정 데이터를 저장한다. 따라서 이더리움과 같이 계정의 전체 상태를 가진 암호화폐에도 우리가 제안한 정렬된 머클트리 구조를 적용할 수 있다.\n\n<h3>6 . 결론</h3>\n본 논문은 비트코인에서 초기 동기화 시에 UTXO 확정(commitments)을 이용하기 위해, 머클트리의 노드의 개수를 약 1/2로 줄인 정렬된 머클트리(sorted merkle tree)를 제안한다. 이 머클트리를 사용하면, 매 블록마다 삭제 및 추가되는 UTXO에 때문에 발생하는 머클트리에서 변화된 전체 해시 계산 개수를 줄일 수 있다. 이 때문에 전체 블록체인을 다운받는 초기 블록 다운로드(IBD) 대신에, UTXO set을 다운로드받는 초기 UTXO 다운로드(IUD)를 사용할 수 있을 것으로 추측한다. 결론적으로 우리는 IUD를 사용할 수 있도록, 머클트리에서 노드의 개수를 기존 머클트리에 비해서 약 1/2로 줄인 새로운 머클트리 구조를 제안한다.\n\n</h3>References</h3>\n[1] Satoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System.” https://bitcoin.org/bitcoin.pdf (2009)\n[2] No Auther, “Bitcoin Core.” https://en.wikipedia.org/wiki/Bitcoin_Core (accessed 3 April 2018)\n[3] No Auther, “Scalability.” Bitcoin Wikipedia https://en.bitcoin.it/wiki/Scalability (accessed 3 April 2018)\n[4] No Auther, “Block Chain Overview.” https://bitcoin.org/en/developer-guide#block-chain-overview\n[5] Aleksandr Bulkin, “Explaining blockchain — how proof of work enables trustless consensus.” https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\n[6] No Auther, “Initial Block Download.” https://bitcoin.org/en/developer-guide#initial-block-download\n[7] No Auther, “Block file pruning.” https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\n[8] No Auther, ”Chain Reorganization.” https://en.bitcoin.it/wiki/Chain_Reorganization\n[9] No Auther, “Full Node.” https://bitcoin.org/en/developer-guide#full-node\n[10] No Auther. “Unspent transaction output set.” Statoshi.info http://statoshi.info/dashboard/db/unspent-transaction-output-set (accessed 5 April 2017)\n[11] Andrew Miller. “Storing UTXOs in a Balanced Merkle Tree.” Bitcointalk https://bitcointalk.org/index.php?topic=101734.0\n[12] No Auther. “Pettycoin Revisted Part I: Utxo Commitments.” http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\n[13] Peter Todd. “Making UTXO Set Growth Irrelevant With Low-Latency Delayed TXO Commitments.” https://petertodd.org/2016/delayed-txo-commitments\n[14] No Auther. “Merkle tree.” https://en.wikipedia.org/wiki/Merkle_tree\n[15] No Auther. “Number of Unspent Transaction Outputs.” https://blockchain.info/charts/utxo-count?timespan=all\n[16] No Auther. “sorted-merkle-tree-issue693.” https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\n[17] Gavin Wood. “Ethereum: A secure decentralized generalized transaction ledger” No Publisher (2014) http://gavwood.com/paper.pdf\n[18] Jae Kwon and Ethan Buchman. “Cosmos whitepaper.” Cosmos https://cosmos.network/whitepaper (accessed 3 April 2018)",
"json_metadata": "{\"tags\":[\"blockchain\",\"bitcoin\",\"merkle\",\"tree\",\"utxo\"],\"image\":[\"https://cdn.steemitimages.com/DQmehiKmBH4gwbnAhWymQ3iNo88CxWizUyJWtp3vPCCfqDn/fig1.png\",\"https://cdn.steemitimages.com/DQmWvT63aneVv51GZLvb3zgCnJKCKNutnRTHx3bYAaMtTvP/fig2.png\",\"https://cdn.steemitimages.com/DQmWKaoaCzAMgSaczWANdsSATJKjn4uqc59nCQUDCfTnMFE/fig3.png\"],\"links\":[\"https://bitcoin.org/bitcoin.pdf\",\"https://en.wikipedia.org/wiki/Bitcoin_Core\",\"https://en.bitcoin.it/wiki/Scalability\",\"https://bitcoin.org/en/developer-guide#block-chain-overview\",\"https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845\",\"https://bitcoin.org/en/developer-guide#initial-block-download\",\"https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning\",\"https://en.bitcoin.it/wiki/Chain_Reorganization\",\"https://bitcoin.org/en/developer-guide#full-node\",\"http://statoshi.info/dashboard/db/unspent-transaction-output-set\",\"https://bitcointalk.org/index.php?topic=101734.0\",\"http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html\",\"https://petertodd.org/2016/delayed-txo-commitments\",\"https://en.wikipedia.org/wiki/Merkle_tree\",\"https://blockchain.info/charts/utxo-count?timespan=all\",\"https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0\",\"http://gavwood.com/paper.pdf\",\"https://cosmos.network/whitepaper\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}dvshinupvoted (100.00%) @loum / eos-bp-stake2019/02/12 11:43:00
dvshinupvoted (100.00%) @loum / eos-bp-stake
2019/02/12 11:43:00
| voter | dvshin |
| author | loum |
| permlink | eos-bp-stake |
| weight | 10000 (100.00%) |
| Transaction Info | Block #30281681/Trx dc1fda089b32653d9acf11de0c10b6c895eea03b |
View Raw JSON Data
{
"trx_id": "dc1fda089b32653d9acf11de0c10b6c895eea03b",
"block": 30281681,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-02-12T11:43:00",
"op": [
"vote",
{
"voter": "dvshin",
"author": "loum",
"permlink": "eos-bp-stake",
"weight": 10000
}
]
}palanmindupvoted (100.00%) @loum / eos-ethereum2019/01/19 05:24:00
palanmindupvoted (100.00%) @loum / eos-ethereum
2019/01/19 05:24:00
| voter | palanmind |
| author | loum |
| permlink | eos-ethereum |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29583546/Trx bde109f33609d192d892c07be5408da9e5f1121e |
View Raw JSON Data
{
"trx_id": "bde109f33609d192d892c07be5408da9e5f1121e",
"block": 29583546,
"trx_in_block": 11,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-01-19T05:24:00",
"op": [
"vote",
{
"voter": "palanmind",
"author": "loum",
"permlink": "eos-ethereum",
"weight": 10000
}
]
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress44.21%
{
"voting_manabar": {
"current_mana": "51924868624",
"last_update_time": 1667108709
},
"downvote_manabar": {
"current_mana": "13246139955",
"last_update_time": 1667108709
},
"rc_account": {
"account": "loum",
"rc_manabar": {
"current_mana": "55005308794",
"last_update_time": 1667664522
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "55005308794"
}
}Account Metadata
| POSTING JSON METADATA | |
| profile | {"name":"Kim, Sungil","location":"Seoul, Korea","version":2,"about":"전자공학 박사이고, https://url.kr/oi9fhd 제가 쓴 논문"} |
| JSON METADATA | |
| profile | {"about":"제가 17.5.8일에 Ledger 저널에 제출한 논문: https://goo.gl/EprsXt","name":"loum","location":"Seoul, Korea"} |
{
"posting_json_metadata": {
"profile": {
"name": "Kim, Sungil",
"location": "Seoul, Korea",
"version": 2,
"about": "전자공학 박사이고, https://url.kr/oi9fhd 제가 쓴 논문"
}
},
"json_metadata": {
"profile": {
"about": "제가 17.5.8일에 Ledger 저널에 제출한 논문: https://goo.gl/EprsXt",
"name": "loum",
"location": "Seoul, Korea"
}
}
}Auth Keys
Owner
Single Signature
Public Keys
STM8NFaszEbFgqHYNePvo6hBmy3VfeAUvhuiy6htmmPEC4d7i2sQB1/1
Active
Single Signature
Public Keys
STM7nHptf87cAWsdyKCLQDVzsotpCXNzWzFYzV3ULPZ7GCHNoMycS1/1
Posting
Single Signature
Public Keys
STM4zatsUEkF6omzaefba6y6nZZxvLgvVpJ5TqMNDEzYQpDZYnwXV1/1
Memo
STM6JAxKTLGQn9izx1vk14ayQZkbva7TxMBiXSFNEJk6cfThZaejT
{
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8NFaszEbFgqHYNePvo6hBmy3VfeAUvhuiy6htmmPEC4d7i2sQB",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7nHptf87cAWsdyKCLQDVzsotpCXNzWzFYzV3ULPZ7GCHNoMycS",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM4zatsUEkF6omzaefba6y6nZZxvLgvVpJ5TqMNDEzYQpDZYnwXV",
1
]
]
},
"memo": "STM6JAxKTLGQn9izx1vk14ayQZkbva7TxMBiXSFNEJk6cfThZaejT"
}Witness Votes
0 / 30
No active witness votes.
[]