jsup/avle code update - you don't have to write post everyday

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/jsup-avle-code-update-you-don-t-have-to-write-post-everyday Hello, this is @joviansummer, developer of @jsup and@avle voting service. Voting service code for @jsup and @avle has been updated. I had been considering this update for a while, and recently I could come up with detailed implementation plan which resulted in a relatively swift code revision. The new added feature is capability to give daily upvote to the first thing you write for the day(timezone GMT+9) regardless of post or comment/reply. Writing a post everyday can be challenging. In that case, you can write a reply to receive daily upvote because writing a reply everyday is much easier and also a good way to engage in your community. Writing a post everyday just to get an upvote can be very tedious and exhausting, and post itself could easily become low-quality. There may be people who enjoy writing a post everyday, but we can't ignore th...

블럭체인(blockchain)을 블럭체인이라고 부르는 이유

by joviansummer
original STEEMIT post: https://steemit.com/blog/@joviansummer/blockchain


기술적인 측면의 얘기이긴 합니다만, 상식적으로 알아두면 나쁘지 않을 것 같고 또한 스팀의 블럭을 이용해서 간편하게 예시를 볼 수 있어서 간략하게나마 정리해 봅니다.

블럭체인은 말 그대로 블럭(block)이 사슬(chain)처럼 줄줄이 이어져 있다는 의미입니다. 이것이 어떤 식으로 생겼는지에 대해서 스팀의 블럭을 이용해서 잠깐 살펴보겠습니다.

스팀의 제네시스 블럭(genesis block), 즉 가장 처음에 생성된 1번 블럭의 내용은 아래와 같습니다(가독성 향상을 위해 굵은 글씨와 줄바꿈을 사용했습니다).

{
'previous': '0000000000000000000000000000000000000000',
'timestamp': '2016-03-24T16:05:00',
'witness': 'initminer',
'transaction_merkle_root': '0000000000000000000000000000000000000000',
'extensions': [],
'witness_signature': '204f8ad56a8f5cf722a02b035a61b500aa59b9519b2c33c77a80c0a714680a5a5a7a340d909d19996613c5e4ae92146b9add8a7a663eef37d837ef881477313043',
'transactions': [],
'block_id': '0000000109833ce528d5bbfb3f6225b39ee10086',
'signing_key': 'STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX',
'transaction_ids': [],
'id': 1
}

복잡해 보이긴 하는데, 저도 지식이 깊지는 않으므로 가장 기본적인 부분만 생각해 보겠습니다.

"previous"에는 이 블럭 바로 이전에 생성된 블럭의 식별자가 들어갑니다. 1번 블럭이므로 이 값은 "0000...0"이군요. 블럭이 생성된 시점은 "timestamp"에 명시된 2016년 3월 24일 16시 5분 00초(GMT)입니다. 이 블럭을 생성한 증인 계정은 "witness"에 명시된 initminer이고 "witness_signature"에 디지털 서명이 들어가 있습니다.

포스팅, 보팅 등 트랜잭션이 있었다면 "transactions"에 내용이 들어 있겠지만 이 블럭에는 없습니다.

이 블럭의 식별자는 "block_id"에 명시된 값 "0000....10086"입니다. 블럭 번호는 "id"에 명시된 값입니다. 첫번째 블럭이니까 1입니다.

이제 바로 다음에 붙어 있는 2번 블럭을 보겠습니다. 아래와 같습니다.

{
'previous': '0000000109833ce528d5bbfb3f6225b39ee10086',
'timestamp': '2016-03-24T16:05:36',
'witness': 'initminer',
'transaction_merkle_root': '0000000000000000000000000000000000000000',
'extensions': [],
'witness_signature': '1f3e85ab301a600f391f11e859240f090a9404f8ebf0bf98df58eb17f455156e2d16e1dcfc621acb3a7acbedc86b6d2560fdd87ce5709e80fa333a2bbb92966df3',
'transactions': [],
'block_id': '00000002ed04e3c3def0238f693931ee7eebbdf1',
'signing_key': 'STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX',
'transaction_ids': [],
'id': 2
}

2번 블럭의 "previous"에 어떤 값이 들어가 있는지 보면, 바로 1번 블럭의 "block_id" 값이 들어가 있습니다. 이런 식으로 현재 블럭의 식별자와 바로 앞에 있는 블럭의 식별자를 기록해서 사슬처럼 계속 이어지도록 데이터를 구성하고 있습니다. 블럭체인이죠.

2번 블럭은 1번 블럭 생성후 36초후에 생성되었네요. 예전에는 블럭 타임이 3초가 아니라 다른 값이었는지 아니면 처음이라 증인이 1명뿐이라 그런 것인지 잘 모르겠습니다.

마지막으로 최근에 생성된 블럭을 하나 보겠습니다. 블럭 번호 67726125번이고, 이 블럭에는 사용자 트랜잭션도 포함되어서 "transactions" 항목이 상당히 복잡해졌음을 볼 수 있습니다. 증인 노드들이 이런 블럭을 생성하고 저장하면서 블럭체인을 유지합니다.

{
'previous': '04096b2c8c007879f32599e062325fb9f36b249c',
'timestamp': '2022-09-16T01:50:06',
'witness': 'boylikegirl.wit',
'transaction_merkle_root': 'ab2e7d365cf160830dfe3d3959f62acd3caf4853',
'extensions': [],
'witness_signature': '207c94d805453a2aee68bbb79f76a0564321af80e95d26fef4b2524698f669099f02ea85d800ecf40ccf138970c0ea28bbd7e1fa590a2e4595fa6fb314e6f21f18',
'transactions': [{'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T02:00:00', 'operations': [{'type': 'claim_reward_balance_operation', 'value': {'account': 'upvu', 'reward_steem': {'amount': '0', 'precision': 3, 'nai': '@@000000021'}, 'reward_sbd': {'amount': '0', 'precision': 3, 'nai': '@@000000013'}, 'reward_vests': {'amount': '245695591381', 'precision': 6, 'nai': '@@000000037'}}}], 'extensions': [], 'signatures': ['1f18c5a2eec9cc256591d6e3aad39eca0fb3af84cb28469208344edef6d8a4f3120528a2483db72ca9c9f8a4cf8bbcb7c3d13d9b820c26b28f463726026d76d813']}, {'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T02:00:00', 'operations': [{'type': 'vote_operation', 'value': {'voter': 'goldbloger5', 'author': 'upvotebank', 'permlink': 'daily-upvotebank-report-2317-20220916t000503546z-post', 'weight': 10000}}], 'extensions': [], 'signatures': ['2055cdebad9162f3360f05b7e80eacecb2f86d57ca933901c4b7d07d1b06a15d841446528a31ca3219554976d47248df15f753e138c0d5c141bb107cba6f39e14f']}, {'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T02:00:00', 'operations': [{'type': 'claim_account_operation', 'value': {'creator': 'sct.krwp', 'fee': {'amount': '0', 'precision': 3, 'nai': '@@000000021'}, 'extensions': []}}], 'extensions': [], 'signatures': ['1f0f624304d83a40e88157659067fa111cfd6d43399a29698bfc392866cb431c58546f20d316a78387c2bd93de997f23165859b362bc0c57a13883bd551d25d1b4']}, {'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T02:00:00', 'operations': [{'type': 'vote_operation', 'value': {'voter': 'deepthin', 'author': 'silverd510', 'permlink': '3v9m2m-ingot', 'weight': 5000}}], 'extensions': [], 'signatures': ['202ea0dfe0c55bfec6b9a0a0c48be8470b1ad830f54b9ac00b6f3367a9e97cb39e465b0f08e4b15bae24aeb825729b495dcd46ab83f10c0ba29a22ef9e889348d7']}, {'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T01:59:57', 'operations': [{'type': 'comment_operation', 'value': {'parent_author': 'mr-sentu', 'parent_permlink': 'ri99ka', 'author': 'yoieuqudniram', 'permlink': 'ria53a', 'title': '', 'body': 'thank you. im delighted to be here', 'json_metadata': '{"app":"steemit/0.2"}'}}], 'extensions': [], 'signatures': ['20554ac24c9504c62a3efa1efd3dbf2bf32baef9c5c47b632162c26d1dfc2f9d9e07c8905496c0c3c91109376c219fb61930729008168ce2d3c5d6bbeff6be6d16']}, {'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T02:00:00', 'operations': [{'type': 'vote_operation', 'value': {'voter': 'lord-of-the-d', 'author': 'silverd510', 'permlink': '3v9m2m-ingot', 'weight': 10000}}], 'extensions': [], 'signatures': ['207a8f38321591baee3e59fa7a447c93afffc22c5b2742326d9a7d80134beccd031e02f27ed25a5f558304e016322e25d88039caa5cfa13b0631c366f63f1309ff']}, {'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T02:00:03', 'operations': [{'type': 'claim_reward_balance_operation', 'value': {'account': 'aceh.witness', 'reward_steem': {'amount': '0', 'precision': 3, 'nai': '@@000000021'}, 'reward_sbd': {'amount': '0', 'precision': 3, 'nai': '@@000000013'}, 'reward_vests': {'amount': '3600833', 'precision': 6, 'nai': '@@000000037'}}}], 'extensions': [], 'signatures': ['206e7c7612671761e6db2c91b3810e1bd78727b75e12eb764b0a0923c078187de879ba72409f1554facd51615e7985fef7be211032e51cf7acd58125da3a2e4fed']}, {'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T02:00:03', 'operations': [{'type': 'vote_operation', 'value': {'voter': 'zacky17', 'author': 'syawalkoki', 'permlink': 'wherein-1663261402895-s', 'weight': 1000}}], 'extensions': [], 'signatures': ['1f09b537384c9c6b86058af3f11441433e62ddd921126605548b2e72fb612f311d0c94f37722e5efb6db97479650ef555b483fc2dd0e0aee5591b8d7ae87d55bcb']}, {'ref_block_num': 27411, 'ref_block_prefix': 1645367809, 'expiration': '2022-09-16T02:00:03', 'operations': [{'type': 'vote_operation', 'value': {'voter': 'joseantpp', 'author': 'silverd510', 'permlink': '3v9m2m-ingot', 'weight': 5000}}], 'extensions': [], 'signatures': ['1f525e3b50d6f8ceb7072007e0359a87e6272999b2d6358699a6740ebf9cf000931bab11a9948066e1b26627dcafa26a808eaae96348abc1f6079ea412f1681de2']}],
'block_id': '04096b2d56ebb7d16335ce38a2165f55c3a76aeb',
'signing_key': 'STM8UGRaqnSQq9bgZF2RRKqNhe77ywAT23idMEYhu257NNBdunHCy',
'transaction_ids': ['437b62b174b772592aaae2fbe3599f139fc94b04', 'be2b118e6b7a93435d51f7cf19f07c4d38e5937e', 'be15bd2df5c9b1171c4232e9b36d8ca2892f606b', '844857e32b5bb86050cd142135d428be3007fc8e', 'ddc9cf06cfcfb45284f9e3b61beac2d628e410b7', '830d15567a14f3a26300fc781255d6b72469402f', '06d7ee7448fa5b05263b76607f3488c99096d675', '3b3eb556cd939c2fb75556a575d0d8b527005d81', 'cbbff3ffdf927ffffb09875d15e47fa91d4e8082'],
'id': 67726125
}

블럭 조회는 파이썬 beem을 이용했습니다. 관련 내용은 아래의 링크를 참고해 주시기 바랍니다.

파이썬 beem을 이용해서 스팀 블럭체인의 특정 블럭(번호 지정) 내용 확인


@joviansummer의 스팀 프로젝트

스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)

jswit 증인 노드 프로젝트를 시작합니다.

jsup 업보팅(upvoting) 서비스 소개

jsup 수혜자 지정 기능 추가

jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다.

jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기

STEEM.NFT - 디지털 아트 보존 프로젝트


Posted through the AVLE Dapp (https://avle.io)

Comments

Popular posts from this blog

Nuitka - 파이썬 스크립트를 바이너리 실행 파일로 변환

[EN] STEEM-services: dapps/services webpage with sort and search functions

[ENG] jsup 2.0 - make your upvote great again