VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.001USD
STEEM
0.001STEEM
SBD
0.002SBD
Effective Power
1.201SP
├── Own SP
0.000SP
└── Incoming DelegationsDeleg
+1.201SP
Detailed Balance
| STEEM | ||
| balance | 0.001STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.000SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 1.201SP | SP |
| Effective Power | 1.201SP | SP |
| Reward SP (pending) | 0.003SP | SP |
| SBD | ||
| sbd_balance | 0.002SBD | 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.001 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.000 STEEM",
"vesting_shares": "0.000000 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "1953.311140 VESTS",
"sbd_balance": "0.002 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.000 SBD",
"conversions": []
}Account Info
| name | minhokim |
| id | 1180995 |
| rank | 1,589,501 |
| reputation | 235905244 |
| created | 2018-11-27T09:14:21 |
| recovery_account | steem |
| proxy | None |
| post_count | 18 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2019-03-28T08:55:48 |
| last_root_post | 2019-03-28T08:55:48 |
| last_vote_time | 2019-03-28T08:57:54 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.001 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.002 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 0.000000 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 1953.311140 VESTS |
| reward_vesting_balance | 6.032686 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 2020-03-06T03:05:27 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 2018-12-09T09:07:00 |
| savings_sbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"active": {
"account_auths": [],
"key_auths": [
[
"STM7fwUDBgZm7FF212GsSKh8UAMxUNki8MNrzt7wiA2LiDVkSxpxR",
1
]
],
"weight_threshold": 1
},
"balance": "0.001 STEEM",
"can_vote": true,
"comment_count": 0,
"created": "2018-11-27T09:14:21",
"curation_rewards": 3,
"delegated_vesting_shares": "0.000000 VESTS",
"downvote_manabar": {
"current_mana": 488327785,
"last_update_time": 1588942782
},
"guest_bloggers": [],
"id": 1180995,
"json_metadata": "{\"profile\":{\"location\":\"Seoul\",\"profile_image\":\"https://cdn.steemitimages.com/DQmdJt1ro3gTnDxnCVBD2BzkD39o99eJuWAwT8CcFUBxn9f/%EC%82%AC%EC%A7%84.jpg\"}}",
"last_account_recovery": "1970-01-01T00:00:00",
"last_account_update": "2020-03-06T03:05:27",
"last_owner_update": "1970-01-01T00:00:00",
"last_post": "2019-03-28T08:55:48",
"last_root_post": "2019-03-28T08:55:48",
"last_vote_time": "2019-03-28T08:57:54",
"lifetime_vote_count": 0,
"market_history": [],
"memo_key": "STM77zg5sAJTNXoNp8Tr4YJjhSDF8GBiSdmZaDcdbg8YnZYKqDGu4",
"mined": false,
"name": "minhokim",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"other_history": [],
"owner": {
"account_auths": [],
"key_auths": [
[
"STM6bkJsEJFrQNiHoNL9oewARAB6xMcC31bSadNBBEtpgMayvJhNH",
1
]
],
"weight_threshold": 1
},
"pending_claimed_accounts": 0,
"post_bandwidth": 0,
"post_count": 18,
"post_history": [],
"posting": {
"account_auths": [
[
"dtube.app",
1
]
],
"key_auths": [
[
"STM6oB3ZVWMFJFe9vUE7pmTN7yykBfNtrfSnxFNwhSdutuYM5cLef",
1
]
],
"weight_threshold": 1
},
"posting_json_metadata": "{\"profile\":{\"location\":\"Seoul\",\"version\":2}}",
"posting_rewards": 0,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"proxy": "",
"received_vesting_shares": "1953.311140 VESTS",
"recovery_account": "steem",
"reputation": 235905244,
"reset_account": "null",
"reward_sbd_balance": "0.000 SBD",
"reward_steem_balance": "0.000 STEEM",
"reward_vesting_balance": "6.032686 VESTS",
"reward_vesting_steem": "0.003 STEEM",
"savings_balance": "0.000 STEEM",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"sbd_balance": "0.002 SBD",
"sbd_last_interest_payment": "2018-12-09T09:07:00",
"sbd_seconds": "0",
"sbd_seconds_last_update": "2018-12-09T09:07:00",
"tags_usage": [],
"to_withdraw": 0,
"transfer_history": [],
"vesting_balance": "0.000 STEEM",
"vesting_shares": "0.000000 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"vote_history": [],
"voting_manabar": {
"current_mana": 1953311140,
"last_update_time": 1588942782
},
"voting_power": 0,
"withdraw_routes": 0,
"withdrawn": 0,
"witness_votes": [],
"witnesses_voted_for": 0,
"rank": 1589501
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2020/05/08 12:59:42
2020/05/08 12:59:42
| delegatee | minhokim |
| delegator | steem |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #43197415/Trx d24e43c9ab7de06c2064979891033c666723e1ab |
View Raw JSON Data
{
"block": 43197415,
"op": [
"delegate_vesting_shares",
{
"delegatee": "minhokim",
"delegator": "steem",
"vesting_shares": "1953.311140 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-05-08T12:59:42",
"trx_id": "d24e43c9ab7de06c2064979891033c666723e1ab",
"trx_in_block": 28,
"virtual_op": 0
}minhokimupdated their account properties2020/03/06 03:05:27
minhokimupdated their account properties
2020/03/06 03:05:27
| account | minhokim |
| extensions | [] |
| json metadata | |
| posting json metadata | {"profile":{"location":"Seoul","version":2}} |
| Transaction Info | Block #41403254/Trx ae37ff523eb3cd18cb35ed3fa6fd4f2e62e95cd2 |
View Raw JSON Data
{
"block": 41403254,
"op": [
"account_update2",
{
"account": "minhokim",
"extensions": [],
"json_metadata": "",
"posting_json_metadata": "{\"profile\":{\"location\":\"Seoul\",\"version\":2}}"
}
],
"op_in_trx": 0,
"timestamp": "2020-03-06T03:05:27",
"trx_id": "ae37ff523eb3cd18cb35ed3fa6fd4f2e62e95cd2",
"trx_in_block": 16,
"virtual_op": 0
}2019/11/27 10:07:24
2019/11/27 10:07:24
| author | steemitboard |
| body | Congratulations @minhokim! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@minhokim/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@minhokim) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=minhokim)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| parent author | minhokim |
| parent permlink | 2-contract-dapp |
| permlink | steemitboard-notify-minhokim-20191127t100723000z |
| title | |
| Transaction Info | Block #38538291/Trx 5598852e41907d1f6a6dfdee2d25ca8a60711930 |
View Raw JSON Data
{
"block": 38538291,
"op": [
"comment",
{
"author": "steemitboard",
"body": "Congratulations @minhokim! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@minhokim/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@minhokim) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=minhokim)_</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\"]}",
"parent_author": "minhokim",
"parent_permlink": "2-contract-dapp",
"permlink": "steemitboard-notify-minhokim-20191127t100723000z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-11-27T10:07:24",
"trx_id": "5598852e41907d1f6a6dfdee2d25ca8a60711930",
"trx_in_block": 4,
"virtual_op": 0
}2019/06/27 09:03:39
2019/06/27 09:03:39
| delegatee | minhokim |
| delegator | steem |
| vesting shares | 9948.082372 VESTS |
| Transaction Info | Block #34161715/Trx abf3651228c62b4b67b7b35bfd565cb5df571981 |
View Raw JSON Data
{
"block": 34161715,
"op": [
"delegate_vesting_shares",
{
"delegatee": "minhokim",
"delegator": "steem",
"vesting_shares": "9948.082372 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2019-06-27T09:03:39",
"trx_id": "abf3651228c62b4b67b7b35bfd565cb5df571981",
"trx_in_block": 22,
"virtual_op": 0
}2019/05/26 13:45:48
2019/05/26 13:45:48
| delegatee | minhokim |
| delegator | steem |
| vesting shares | 29899.401831 VESTS |
| Transaction Info | Block #33247046/Trx b2dec5a130a7d03bfb6771f886c5c3ca18a61dc6 |
View Raw JSON Data
{
"block": 33247046,
"op": [
"delegate_vesting_shares",
{
"delegatee": "minhokim",
"delegator": "steem",
"vesting_shares": "29899.401831 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2019-05-26T13:45:48",
"trx_id": "b2dec5a130a7d03bfb6771f886c5c3ca18a61dc6",
"trx_in_block": 13,
"virtual_op": 0
}hazungupvoted (100.00%) @minhokim / react-dapp-4-dapp2019/05/08 05:41:03
hazungupvoted (100.00%) @minhokim / react-dapp-4-dapp
2019/05/08 05:41:03
| author | minhokim |
| permlink | react-dapp-4-dapp |
| voter | hazung |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32719268/Trx 0cd5107a598c505a89baeeb3eba83b3f918e8f61 |
View Raw JSON Data
{
"block": 32719268,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-4-dapp",
"voter": "hazung",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-08T05:41:03",
"trx_id": "0cd5107a598c505a89baeeb3eba83b3f918e8f61",
"trx_in_block": 20,
"virtual_op": 0
}hazungupvoted (100.00%) @minhokim / react-dapp-3-dapp2019/05/08 05:40:54
hazungupvoted (100.00%) @minhokim / react-dapp-3-dapp
2019/05/08 05:40:54
| author | minhokim |
| permlink | react-dapp-3-dapp |
| voter | hazung |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32719265/Trx e997c3dd1de7618065f67d37edc54e59a78c809f |
View Raw JSON Data
{
"block": 32719265,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-3-dapp",
"voter": "hazung",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-08T05:40:54",
"trx_id": "e997c3dd1de7618065f67d37edc54e59a78c809f",
"trx_in_block": 6,
"virtual_op": 0
}hazungupvoted (100.00%) @minhokim / 78xfhs-react-dapp-12019/05/08 05:40:48
hazungupvoted (100.00%) @minhokim / 78xfhs-react-dapp-1
2019/05/08 05:40:48
| author | minhokim |
| permlink | 78xfhs-react-dapp-1 |
| voter | hazung |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32719263/Trx 7836022b66249dcb567d7a6a244f3e48cd1fbdcb |
View Raw JSON Data
{
"block": 32719263,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "78xfhs-react-dapp-1",
"voter": "hazung",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-08T05:40:48",
"trx_id": "7836022b66249dcb567d7a6a244f3e48cd1fbdcb",
"trx_in_block": 9,
"virtual_op": 0
}hazungupvoted (100.00%) @minhokim / react-dapp-12019/05/08 05:40:42
hazungupvoted (100.00%) @minhokim / react-dapp-1
2019/05/08 05:40:42
| author | minhokim |
| permlink | react-dapp-1 |
| voter | hazung |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32719261/Trx 9101f1822ee74dd7a42a34fe7b8eb4cbdc49eea2 |
View Raw JSON Data
{
"block": 32719261,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-1",
"voter": "hazung",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-08T05:40:42",
"trx_id": "9101f1822ee74dd7a42a34fe7b8eb4cbdc49eea2",
"trx_in_block": 17,
"virtual_op": 0
}hazungremoved vote from (0.00%) @minhokim / react-dapp-2-1-ipfs2019/05/08 05:40:39
hazungremoved vote from (0.00%) @minhokim / react-dapp-2-1-ipfs
2019/05/08 05:40:39
| author | minhokim |
| permlink | react-dapp-2-1-ipfs |
| voter | hazung |
| weight | 0 (0.00%) |
| Transaction Info | Block #32719260/Trx accc3c244613a6f013835a2e9a7f56605a7cd38b |
View Raw JSON Data
{
"block": 32719260,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-1-ipfs",
"voter": "hazung",
"weight": 0
}
],
"op_in_trx": 0,
"timestamp": "2019-05-08T05:40:39",
"trx_id": "accc3c244613a6f013835a2e9a7f56605a7cd38b",
"trx_in_block": 27,
"virtual_op": 0
}hazungupvoted (100.00%) @minhokim / react-dapp-2-1-ipfs2019/05/08 05:40:30
hazungupvoted (100.00%) @minhokim / react-dapp-2-1-ipfs
2019/05/08 05:40:30
| author | minhokim |
| permlink | react-dapp-2-1-ipfs |
| voter | hazung |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32719257/Trx 84a8fbd7f2abc18d6edf39465507b2e6119020f1 |
View Raw JSON Data
{
"block": 32719257,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-1-ipfs",
"voter": "hazung",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-08T05:40:30",
"trx_id": "84a8fbd7f2abc18d6edf39465507b2e6119020f1",
"trx_in_block": 58,
"virtual_op": 0
}minhokimpublished a new post: 2-contract-dapp2019/03/28 09:05:54
minhokimpublished a new post: 2-contract-dapp
2019/03/28 09:05:54
| author | minhokim |
| body | 안녕하세요 Kovan 네트워크 사용해 Dapp 만들기 2탄입니다! 저번 포스팅에서는 Smart Contract를 작성하고 Kovan 네트워크에 배포후 확인까지 했었죠 오늘은 직접 클라이언트 화면을 만들어 데이터를 넣고 가져오는 실습을 진행 하겠습니다! 아주 간단한 그냥 숫자를 입력해 블록에 저장하고, 블록에서 숫자를 가져오는 웹을 만들거예요. 오늘 하는 내용을 바탕으로 각자의 Smart Contract를 만들어서 더 발전시키면 개인 능력 향상에 정말 도움이 될거라 생각됩니다. 자 먼저 빈 react프로젝트를 생성하겠습니다. https://cdn.steemitimages.com/DQmdyvWZWG58KzNmmDmchUmZTLBqomAbHqSYmejgHRcnStb/image.png create-react-app 이라는 모듈을 설치하고, create-react-app 를 사용해 빈 react프로젝트를 생성할겁니다 -npm install -g create-react-app https://cdn.steemitimages.com/DQmTxjTcmPcwPj6ARyznevMowKKbF5Vn5AvKzNAt5BEVJ7v/image.png -create-react-app 폴더이름 이런식으로 빈 프로젝트를 생성해주시면 되겠습니다. 프로젝트를 VsCode를 사용해 열어주세요 https://cdn.steemitimages.com/DQmfVeKbSJzxLV7B2JNfFuPapiZRadDRenCrkSGNyCZsQX9/image.png 그리고 위 이미지처럼 아무폴더나 생성(저는 Abi라는 폴더)후 SimpleStorage.json이라는 파일을 하나 생성했습니다 바로 이부분에 저번시간에 배포했던 Contract의 Abi코드값을 넣을거예요! https://cdn.steemitimages.com/DQmWrNu8fGmbuvA7vkdVAP9r11ABWYQDvmrzWYuCRkSBebB/image.png SimpleStorage.json 파일안에 { "contactName":"SimpleStorage", "abi": [이부분에 Abi값을 붙여넣을거예요] } 직접 작성해주세요! 저번 시간에 Abi값 복사를 안하신분을 위해 다시한번 Abi값을 확인하는 법을 알려드릴게요. 자신의 Kovan 네트워크 이더계좌주소를 복사해주세요! https://cdn.steemitimages.com/DQmZTkro5SrXhdVH8SskuGoMMBnuPbhKQrS4Xr7xubcEsQV/image.png https://kovan.etherscan.io/ 에 가셔서 붙여넣기! https://cdn.steemitimages.com/DQmdzW2orVcvS6TMkcm9gEeEnhHF9sXJ83tQ2t2kqecLgQa/image.png Contract Creation이라고 써있는 부분을 눌러주시면 확인 가능합니다. https://cdn.steemitimages.com/DQmbfZKG9ZJcrx4b1B6KfTGn2m7j5Vb8dwQU9aCSTJXrP9A/image.png 그리고 그냥 붙여넣기 해주세요! 이제 App.js에 가서 직접 코드를 작성해보도록 할게요. 정말 간단한 프로젝트니 따로 컴포넌트를 나누지는 않을게요. https://cdn.steemitimages.com/DQmWxRUWdx6e5MGhQvYALY8zNbTtmo9Xsyuvi1D1xpyF6Z4/image.png 저희는 web3를 사용할거기 때문에 web3 모듈을 설치해주세요 https://cdn.steemitimages.com/DQmQi242XxMsTbRpkM5UXvsdVx9cYRGuWG2L432ZHsfksTk/image.png 상단에 web3와 저희가 추가했던 abi를 선언해주세요 그리고 가장중요한 abi를 사용하기위해 인스턴스화를 시켜야겠죠. const SimpleStorageInstance = new web3.eth.Contract(SimpleStorage.abi, '0x0b4B148C6AB76335899A1294c22f48964cB04869') 바로 이부분입니다. 앞에 변수는 abi파일을 추가하고, 뒤에변수는 전 시간에 배포한 컨트랙트의 주소를 써주면되요! <h3>이더계좌주소가 절대아닙니다! 컨트랙트의 주소예요!!</h3> https://cdn.steemitimages.com/DQmaebKXpA49cU9ZQvyAvWq2V5uTuYso6PgMjzxEvXsrgSS/image.png 그리고 세가지의 함수를 만들겠습니다. 블록에 데이터를 저장하는함수, 블록에서 데이터를 불러오는함수, handleChage 함수! SetDate함수를 봐주세요. this.state.SimpleStorageInstance.methods.set(this.state.data).send({ from : '자신의 이더리움 계좌주소'}) 이부분에서 직접 계좌주소를 입력할게요! web3에서 defaultAccount를 가져오는 방법도있는데 일단 직접 입력하겠습니다. https://cdn.steemitimages.com/DQmeLimu72FucikV5zUsxcxheaugcqxrLhAucwjuauJhB5m/image.png 두가지 변수를 추가해주세요! https://cdn.steemitimages.com/DQmUdQvNtbbnjyV73kG1iXMhFLsPqFNV4JGvytdayQs9jbK/image.png 그리고 클라이언트화면 입니다! 제가 예전에 작성했던 포스트를 읽어보시거나 기본적으로 이더리움 Dapp을 조금이라도 공부하셨던 분이라면 정말 무리없이 쉽게 코드를 작성하셨을거예요! 그래서 간단히만 설명했어요! 그리고 이제 npm start를 통해서 프로젝트를 실행해 보겠습니다. https://cdn.steemitimages.com/DQmcsyYnC6sGdQzsGCmkFFFNAfDfE35kRSfXQ5mHgtrKvUL/image.png 대충 아무런 숫자나 입력하고 버튼을 누르고 메타마스크 창에서 승인을 누르면 블록에 데이터가 저장됩니다! <h3>데이터는 숫자만 입력해주세요!</h3> Solidity 코드를 작성할때 저장되는 형식이 int형이였어요..ㅎ https://cdn.steemitimages.com/DQmQSrzreNC6qHQoqgk1APUbsdXYuTh13zcMeekeddh3Aho/image.png 이제 보시면 정상적으로 블록에서 데이터까지 가져오는걸 확인하실수가 있습니다. https://cdn.steemitimages.com/DQmbocZaecRsigedVZsEtmYfe95z8Ha8Lpu87YuSLBKTwrg/image.png 코반이더스캔에서도 tx가 정상적으로 생성되었죠! 이렇게 Kovan같은 네트워크를 사용하면 Ganache를 사용하면서 겪는 불편함 들이 사라집니다. 시간이 되시는 분은 Ropsten이나 Rinkby 이더리움 테스트넷도 한번 사용해보시길 권장드릴게요! |
| json metadata | {"tags":["blockchain","ethereum","solidity","kovan"],"image":["https://cdn.steemitimages.com/DQmdyvWZWG58KzNmmDmchUmZTLBqomAbHqSYmejgHRcnStb/image.png","https://cdn.steemitimages.com/DQmTxjTcmPcwPj6ARyznevMowKKbF5Vn5AvKzNAt5BEVJ7v/image.png","https://cdn.steemitimages.com/DQmfVeKbSJzxLV7B2JNfFuPapiZRadDRenCrkSGNyCZsQX9/image.png","https://cdn.steemitimages.com/DQmWrNu8fGmbuvA7vkdVAP9r11ABWYQDvmrzWYuCRkSBebB/image.png","https://cdn.steemitimages.com/DQmZTkro5SrXhdVH8SskuGoMMBnuPbhKQrS4Xr7xubcEsQV/image.png","https://cdn.steemitimages.com/DQmdzW2orVcvS6TMkcm9gEeEnhHF9sXJ83tQ2t2kqecLgQa/image.png","https://cdn.steemitimages.com/DQmbfZKG9ZJcrx4b1B6KfTGn2m7j5Vb8dwQU9aCSTJXrP9A/image.png","https://cdn.steemitimages.com/DQmWxRUWdx6e5MGhQvYALY8zNbTtmo9Xsyuvi1D1xpyF6Z4/image.png","https://cdn.steemitimages.com/DQmQi242XxMsTbRpkM5UXvsdVx9cYRGuWG2L432ZHsfksTk/image.png","https://cdn.steemitimages.com/DQmaebKXpA49cU9ZQvyAvWq2V5uTuYso6PgMjzxEvXsrgSS/image.png","https://cdn.steemitimages.com/DQmeLimu72FucikV5zUsxcxheaugcqxrLhAucwjuauJhB5m/image.png","https://cdn.steemitimages.com/DQmUdQvNtbbnjyV73kG1iXMhFLsPqFNV4JGvytdayQs9jbK/image.png","https://cdn.steemitimages.com/DQmcsyYnC6sGdQzsGCmkFFFNAfDfE35kRSfXQ5mHgtrKvUL/image.png","https://cdn.steemitimages.com/DQmQSrzreNC6qHQoqgk1APUbsdXYuTh13zcMeekeddh3Aho/image.png","https://cdn.steemitimages.com/DQmbocZaecRsigedVZsEtmYfe95z8Ha8Lpu87YuSLBKTwrg/image.png"],"links":["https://kovan.etherscan.io/"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 2-contract-dapp |
| title | 가나슈가 아닌 이더리움 테스트넷 사용(2.Kovan 배포된 Contract이용 Dapp만들기) |
| Transaction Info | Block #31544857/Trx 0d1cbdd7ff2cba56a9585af4f0d2258ffa6feae3 |
View Raw JSON Data
{
"block": 31544857,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요\n\nKovan 네트워크 사용해 Dapp 만들기 2탄입니다!\n\n저번 포스팅에서는 Smart Contract를 작성하고 Kovan 네트워크에 배포후 확인까지 했었죠\n\n오늘은 직접 클라이언트 화면을 만들어 데이터를 넣고 가져오는 실습을 진행 하겠습니다!\n\n아주 간단한 그냥 숫자를 입력해 블록에 저장하고, 블록에서 숫자를 가져오는 웹을 만들거예요.\n\n오늘 하는 내용을 바탕으로 각자의 Smart Contract를 만들어서 더 발전시키면 개인 능력 향상에 정말 도움이 될거라 생각됩니다.\n\n자 먼저 빈 react프로젝트를 생성하겠습니다.\n\nhttps://cdn.steemitimages.com/DQmdyvWZWG58KzNmmDmchUmZTLBqomAbHqSYmejgHRcnStb/image.png\n\ncreate-react-app 이라는 모듈을 설치하고, create-react-app 를 사용해 빈 react프로젝트를 생성할겁니다\n\n-npm install -g create-react-app\n\nhttps://cdn.steemitimages.com/DQmTxjTcmPcwPj6ARyznevMowKKbF5Vn5AvKzNAt5BEVJ7v/image.png\n\n-create-react-app 폴더이름\n\n이런식으로 빈 프로젝트를 생성해주시면 되겠습니다. \n\n프로젝트를 VsCode를 사용해 열어주세요 \n\nhttps://cdn.steemitimages.com/DQmfVeKbSJzxLV7B2JNfFuPapiZRadDRenCrkSGNyCZsQX9/image.png\n\n그리고 위 이미지처럼 아무폴더나 생성(저는 Abi라는 폴더)후 SimpleStorage.json이라는 파일을 하나 생성했습니다\n\n바로 이부분에 저번시간에 배포했던 Contract의 Abi코드값을 넣을거예요!\n\nhttps://cdn.steemitimages.com/DQmWrNu8fGmbuvA7vkdVAP9r11ABWYQDvmrzWYuCRkSBebB/image.png\n\nSimpleStorage.json 파일안에 \n\n{\n \"contactName\":\"SimpleStorage\",\n \"abi\": [이부분에 Abi값을 붙여넣을거예요]\n}\n\n직접 작성해주세요!\n\n저번 시간에 Abi값 복사를 안하신분을 위해 다시한번 Abi값을 확인하는 법을 알려드릴게요.\n\n자신의 Kovan 네트워크 이더계좌주소를 복사해주세요!\n\n\nhttps://cdn.steemitimages.com/DQmZTkro5SrXhdVH8SskuGoMMBnuPbhKQrS4Xr7xubcEsQV/image.png\n\nhttps://kovan.etherscan.io/ 에 가셔서 붙여넣기!\n\n\nhttps://cdn.steemitimages.com/DQmdzW2orVcvS6TMkcm9gEeEnhHF9sXJ83tQ2t2kqecLgQa/image.png\n\nContract Creation이라고 써있는 부분을 눌러주시면 확인 가능합니다.\n\nhttps://cdn.steemitimages.com/DQmbfZKG9ZJcrx4b1B6KfTGn2m7j5Vb8dwQU9aCSTJXrP9A/image.png\n\n그리고 그냥 붙여넣기 해주세요!\n\n이제 App.js에 가서 직접 코드를 작성해보도록 할게요.\n\n정말 간단한 프로젝트니 따로 컴포넌트를 나누지는 않을게요.\n\n\nhttps://cdn.steemitimages.com/DQmWxRUWdx6e5MGhQvYALY8zNbTtmo9Xsyuvi1D1xpyF6Z4/image.png\n\n저희는 web3를 사용할거기 때문에 web3 모듈을 설치해주세요\n\nhttps://cdn.steemitimages.com/DQmQi242XxMsTbRpkM5UXvsdVx9cYRGuWG2L432ZHsfksTk/image.png\n\n상단에 web3와 저희가 추가했던 abi를 선언해주세요\n그리고 가장중요한 abi를 사용하기위해 인스턴스화를 시켜야겠죠.\n\n const SimpleStorageInstance = new web3.eth.Contract(SimpleStorage.abi, '0x0b4B148C6AB76335899A1294c22f48964cB04869')\n\n바로 이부분입니다. 앞에 변수는 abi파일을 추가하고, 뒤에변수는 전 시간에 배포한 컨트랙트의 주소를 써주면되요!\n\n<h3>이더계좌주소가 절대아닙니다! 컨트랙트의 주소예요!!</h3>\n\n\nhttps://cdn.steemitimages.com/DQmaebKXpA49cU9ZQvyAvWq2V5uTuYso6PgMjzxEvXsrgSS/image.png\n\n그리고 세가지의 함수를 만들겠습니다.\n\n블록에 데이터를 저장하는함수, 블록에서 데이터를 불러오는함수, handleChage 함수!\n\nSetDate함수를 봐주세요.\n\n this.state.SimpleStorageInstance.methods.set(this.state.data).send({ from : '자신의 이더리움 계좌주소'})\n\n이부분에서 직접 계좌주소를 입력할게요! web3에서 defaultAccount를 가져오는 방법도있는데 일단 직접 입력하겠습니다.\n\nhttps://cdn.steemitimages.com/DQmeLimu72FucikV5zUsxcxheaugcqxrLhAucwjuauJhB5m/image.png\n\n두가지 변수를 추가해주세요! \n\nhttps://cdn.steemitimages.com/DQmUdQvNtbbnjyV73kG1iXMhFLsPqFNV4JGvytdayQs9jbK/image.png\n\n그리고 클라이언트화면 입니다!\n\n제가 예전에 작성했던 포스트를 읽어보시거나 기본적으로 이더리움 Dapp을 조금이라도 공부하셨던 분이라면\n\n정말 무리없이 쉽게 코드를 작성하셨을거예요! 그래서 간단히만 설명했어요!\n\n그리고 이제 npm start를 통해서 프로젝트를 실행해 보겠습니다.\n\nhttps://cdn.steemitimages.com/DQmcsyYnC6sGdQzsGCmkFFFNAfDfE35kRSfXQ5mHgtrKvUL/image.png\n\n대충 아무런 숫자나 입력하고 버튼을 누르고 메타마스크 창에서 승인을 누르면 블록에 데이터가 저장됩니다!\n\n<h3>데이터는 숫자만 입력해주세요!</h3>\n\n Solidity 코드를 작성할때 저장되는 형식이 int형이였어요..ㅎ\n\nhttps://cdn.steemitimages.com/DQmQSrzreNC6qHQoqgk1APUbsdXYuTh13zcMeekeddh3Aho/image.png\n\n이제 보시면 정상적으로 블록에서 데이터까지 가져오는걸 확인하실수가 있습니다.\n\nhttps://cdn.steemitimages.com/DQmbocZaecRsigedVZsEtmYfe95z8Ha8Lpu87YuSLBKTwrg/image.png\n\n코반이더스캔에서도 tx가 정상적으로 생성되었죠!\n\n\n이렇게 Kovan같은 네트워크를 사용하면 Ganache를 사용하면서 겪는 불편함 들이 사라집니다.\n \n시간이 되시는 분은 Ropsten이나 Rinkby 이더리움 테스트넷도 한번 사용해보시길 권장드릴게요!",
"json_metadata": "{\"tags\":[\"blockchain\",\"ethereum\",\"solidity\",\"kovan\"],\"image\":[\"https://cdn.steemitimages.com/DQmdyvWZWG58KzNmmDmchUmZTLBqomAbHqSYmejgHRcnStb/image.png\",\"https://cdn.steemitimages.com/DQmTxjTcmPcwPj6ARyznevMowKKbF5Vn5AvKzNAt5BEVJ7v/image.png\",\"https://cdn.steemitimages.com/DQmfVeKbSJzxLV7B2JNfFuPapiZRadDRenCrkSGNyCZsQX9/image.png\",\"https://cdn.steemitimages.com/DQmWrNu8fGmbuvA7vkdVAP9r11ABWYQDvmrzWYuCRkSBebB/image.png\",\"https://cdn.steemitimages.com/DQmZTkro5SrXhdVH8SskuGoMMBnuPbhKQrS4Xr7xubcEsQV/image.png\",\"https://cdn.steemitimages.com/DQmdzW2orVcvS6TMkcm9gEeEnhHF9sXJ83tQ2t2kqecLgQa/image.png\",\"https://cdn.steemitimages.com/DQmbfZKG9ZJcrx4b1B6KfTGn2m7j5Vb8dwQU9aCSTJXrP9A/image.png\",\"https://cdn.steemitimages.com/DQmWxRUWdx6e5MGhQvYALY8zNbTtmo9Xsyuvi1D1xpyF6Z4/image.png\",\"https://cdn.steemitimages.com/DQmQi242XxMsTbRpkM5UXvsdVx9cYRGuWG2L432ZHsfksTk/image.png\",\"https://cdn.steemitimages.com/DQmaebKXpA49cU9ZQvyAvWq2V5uTuYso6PgMjzxEvXsrgSS/image.png\",\"https://cdn.steemitimages.com/DQmeLimu72FucikV5zUsxcxheaugcqxrLhAucwjuauJhB5m/image.png\",\"https://cdn.steemitimages.com/DQmUdQvNtbbnjyV73kG1iXMhFLsPqFNV4JGvytdayQs9jbK/image.png\",\"https://cdn.steemitimages.com/DQmcsyYnC6sGdQzsGCmkFFFNAfDfE35kRSfXQ5mHgtrKvUL/image.png\",\"https://cdn.steemitimages.com/DQmQSrzreNC6qHQoqgk1APUbsdXYuTh13zcMeekeddh3Aho/image.png\",\"https://cdn.steemitimages.com/DQmbocZaecRsigedVZsEtmYfe95z8Ha8Lpu87YuSLBKTwrg/image.png\"],\"links\":[\"https://kovan.etherscan.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "2-contract-dapp",
"title": "가나슈가 아닌 이더리움 테스트넷 사용(2.Kovan 배포된 Contract이용 Dapp만들기)"
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T09:05:54",
"trx_id": "0d1cbdd7ff2cba56a9585af4f0d2258ffa6feae3",
"trx_in_block": 4,
"virtual_op": 0
}minhokimpublished a new post: 1-contract-dapp2019/03/28 09:05:33
minhokimpublished a new post: 1-contract-dapp
2019/03/28 09:05:33
| author | minhokim |
| body | 안녕하세요. 지금까지는 제가 Dapp을 만들때 항상 Ganache를 사용했습니다. 하지만 저같은 개인 개발자는 노트북 하나로 개발을 하기때문에.. Ganache를 24시간 켜놀수가 없기에 항상 컴퓨터를 새로키면 Ganache를 새로 열어서 다시 Contract를 배포하고.. 새로운 블록체인 환경에서 이어서 개발을 했었죠! 메타마스크를 써보신분이라면 Ropsten, Kovan, Rinkeby 이 세가지를 아마도 보셨을거예요. 저는 항상 Ganache를 사용했기때문에 로컬호스트로 메타마스크를 사용했었죠! 위에서 언급한 세가지의 네트워크를 사용한다면, Ganache를 사용했을때처럼 컴퓨터를 킬때마다 Contract를 배포해줄 필요가 없습니다! 정말 이더리움 네트워크처럼 동작을 하기에, 테스트하기에도 훨씬 용이하다고 생각해요! 위 세개중에 오늘은 Kovan에 대해 설명드리고 직접 실습을 진행해보려고 합니다! Kovan etherscan 주소 :https://kovan.etherscan.io/ Kovan faucet 주소 : https://gitter.im/kovan-testnet/faucet Kovan은 Parity라는 프로그램을 통해서 직접 채굴도 할수있고 Geth와 정말 비슷하다고 생각되는데 지금은 Parity는 쓰지 않을거예요. 그럼 ether를 어디서 받냐구요?? 위에 적어둔 Kovan faucet 주소로 들어가셔서 가입하시고 구걸(?) 하시면 ... 3이더씩 주더라구요 ㅋㅋㅋㅋㅋㅋㅋㅋ 3이더면 테스트 하기 충분한 이더라고 생각해요................ https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png 이렇게 메타마스크에서 Kovan에 연결하시면 자신의 계좌 주소가 나오는데 저 주소를 위 faucet홈페이지로 들어가셔서 그냥 써주시면 됩니다 https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png 그러면 3~5분정도 후에 3이더가 들어와 있을거예요! 그럼 이제 직접 SmartContract를 배포해 볼게요! Parity.exe를 사용한다면 Ganache와 비슷한 방법으로 컨트랙트를 작성하고 배포할수가 있는데, 오늘은 Remix IDE를 사용해서 배포할거예요. 제가 확신하지만 훨씬 편하다고 느끼실 겁니다.......... 자 먼저 컨트랙트를 만들어서 Kovan 네트워크에 배포해보도록 하죠! 위에서도 언급했듯이 Remix IDE를 사용해서 Kovan 네트워크에 배포를 할거예요! <h3>Remix주소 : https://remix.ethereum.org</h3> https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png 자! 접속하셨으면 위와 같은 페이지가 나올텐데 위와 같이 간단한 코드를 입력해주세요! pragma solidity ^0.4.18; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } } truffle unbox로 react 프로젝트를 생성하면 나오는 기본 코드예요 그냥 숫자를 블록에 저장하고 가져오는 정말 간단한 아주아주 간단한 코드입니다. https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png 먼저 컨파일러 버전을 선택해주세요. https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png 자동 컴파일이 되고 이렇게 오류없이 깔끔하게 나올거예요 위에 빨간색으로 포인트 준곳을 선택하시고, 이제 Kovan 네트워크에 배포를 하보겠습니다 faucet에서 Kovan네트워크 전용 이더를 받으셨으면 메타마스크를 Kovan네트워크에 연결시켜주세요! https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png 다시 Remix IDE 페이지로 돌아와서 아래와 같이 Inject Web3를 선택하시면 자동으로 kovan 계좌가 연동이되고, Deploy를 클릭하시면 드디어 Kovan네트워크에 SmartContract가 배포가 됩니다 https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png 승인을 눌러주시면 배포가 완료됩니닿 당연히 가스비는 빠져나가구요! https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png 위 이미지처럼 트랜잭션이 일어나고 저기 써있는 주소로 들어가서 정말 배포가 잘되었는지 확인을 해봅시다! https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png 위와 같은 화면이 출력된다면 정상적으로 배포가 잘되고 블록에 컨트랙트가 저장이 된거예요! Kovan 네트워크의 장점은 트랜잭션이 처리되는 시간이 단 4초에 불과하다는 거죠. 속도가 굉장히 빨라서 테스트넷으로 사용하기에 아주 적합하다고 할수있습니다 ㅎㅎ 빨간색으로 포인트 준 컨트랙트 주소를 클릭하시면 이 SmartContract에 대한 정보가 나와요! https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png 여기서 방금 배포한 이 SmartContract에 대해 Dapp을 만들기 위해선 Code부분의 ABI코드가 필수적이니 복사해서 따로 보관해주세요 이제 저희는 어떠한 환경에서도 이 SmartContract를 사용할수가 있게되었습니다!!!! 저는 Kovan 네트워크의 사용법을 익히고 Ganache를 잘 안쓰게 됬어요...ㅋㅋㅋㅋㅋㅋㅋ 그럼 다음포스팅에서는 이 컨트랙트에 대한 간단한 웹을 만들어 보도록 할게요 |
| json metadata | {"tags":["blockchain","ethereum","solidity","kovan"],"image":["https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png","https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png","https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png","https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png","https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png","https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png","https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png","https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png","https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png","https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png","https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png"],"links":["https://kovan.etherscan.io/","https://gitter.im/kovan-testnet/faucet","https://remix.ethereum.org"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 1-contract-dapp |
| title | 가나슈가 아닌 이더리움 테스트넷 사용 (1.Kovan contract배포!) |
| Transaction Info | Block #31544850/Trx a8db82d79b50a4276b5614eebcbd4b3eb94c307b |
View Raw JSON Data
{
"block": 31544850,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요.\n\n지금까지는 제가 Dapp을 만들때 항상 Ganache를 사용했습니다.\n\n하지만 저같은 개인 개발자는 노트북 하나로 개발을 하기때문에.. Ganache를 24시간 켜놀수가 없기에 항상 컴퓨터를 새로키면 Ganache를 새로 열어서 다시 Contract를 배포하고..\n\n새로운 블록체인 환경에서 이어서 개발을 했었죠!\n\n메타마스크를 써보신분이라면 Ropsten, Kovan, Rinkeby 이 세가지를 아마도 보셨을거예요.\n\n저는 항상 Ganache를 사용했기때문에 로컬호스트로 메타마스크를 사용했었죠!\n\n위에서 언급한 세가지의 네트워크를 사용한다면, Ganache를 사용했을때처럼 컴퓨터를 킬때마다 Contract를 배포해줄 필요가 없습니다!\n\n정말 이더리움 네트워크처럼 동작을 하기에, 테스트하기에도 훨씬 용이하다고 생각해요!\n\n위 세개중에 오늘은 Kovan에 대해 설명드리고 직접 실습을 진행해보려고 합니다!\n\nKovan etherscan 주소 :https://kovan.etherscan.io/\nKovan faucet 주소 : https://gitter.im/kovan-testnet/faucet\n\nKovan은 Parity라는 프로그램을 통해서 직접 채굴도 할수있고 Geth와 정말 비슷하다고 생각되는데\n지금은 Parity는 쓰지 않을거예요.\n\n그럼 ether를 어디서 받냐구요?? \n위에 적어둔 Kovan faucet 주소로 들어가셔서 가입하시고 구걸(?) 하시면 ... 3이더씩 주더라구요 ㅋㅋㅋㅋㅋㅋㅋㅋ\n\n3이더면 테스트 하기 충분한 이더라고 생각해요................\n\nhttps://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png\n\n이렇게 메타마스크에서 Kovan에 연결하시면 자신의 계좌 주소가 나오는데 저 주소를 위 faucet홈페이지로 들어가셔서 그냥 써주시면 됩니다\n\nhttps://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png\n\n그러면 3~5분정도 후에 3이더가 들어와 있을거예요! \n\n그럼 이제 직접 SmartContract를 배포해 볼게요!\n\nParity.exe를 사용한다면 Ganache와 비슷한 방법으로 컨트랙트를 작성하고 배포할수가 있는데, \n오늘은 Remix IDE를 사용해서 배포할거예요. \n\n제가 확신하지만 훨씬 편하다고 느끼실 겁니다..........\n\n자 먼저 컨트랙트를 만들어서 Kovan 네트워크에 배포해보도록 하죠!\n\n위에서도 언급했듯이 Remix IDE를 사용해서 Kovan 네트워크에 배포를 할거예요!\n\n<h3>Remix주소 : https://remix.ethereum.org</h3>\n\nhttps://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png\n\n자! 접속하셨으면 위와 같은 페이지가 나올텐데 위와 같이 간단한 코드를 입력해주세요!\n\npragma solidity ^0.4.18;\n\ncontract SimpleStorage {\n uint storedData;\n\n function set(uint x) public {\n storedData = x;\n }\n\n function get() public view returns (uint) {\n return storedData;\n }\n}\n\ntruffle unbox로 react 프로젝트를 생성하면 나오는 기본 코드예요 \n그냥 숫자를 블록에 저장하고 가져오는 정말 간단한 아주아주 간단한 코드입니다.\n\nhttps://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png\n\n먼저 컨파일러 버전을 선택해주세요.\n\nhttps://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png\n\n자동 컴파일이 되고 이렇게 오류없이 깔끔하게 나올거예요\n\n위에 빨간색으로 포인트 준곳을 선택하시고, 이제 Kovan 네트워크에 배포를 하보겠습니다\n\n\nfaucet에서 Kovan네트워크 전용 이더를 받으셨으면 메타마스크를 Kovan네트워크에 연결시켜주세요!\nhttps://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png\n\n\n다시 Remix IDE 페이지로 돌아와서 아래와 같이 Inject Web3를 선택하시면 자동으로 kovan 계좌가 연동이되고,\nDeploy를 클릭하시면 드디어 Kovan네트워크에 SmartContract가 배포가 됩니다\n\nhttps://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png\n\nhttps://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png\n\n승인을 눌러주시면 배포가 완료됩니닿 당연히 가스비는 빠져나가구요!\n\nhttps://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png\n\n위 이미지처럼 트랜잭션이 일어나고 저기 써있는 주소로 들어가서 정말 배포가 잘되었는지 확인을 해봅시다!\n\nhttps://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png\n\n위와 같은 화면이 출력된다면 정상적으로 배포가 잘되고 블록에 컨트랙트가 저장이 된거예요!\n\nKovan 네트워크의 장점은 트랜잭션이 처리되는 시간이 단 4초에 불과하다는 거죠. 속도가 굉장히 빨라서 테스트넷으로 사용하기에 아주 적합하다고 할수있습니다 ㅎㅎ\n\n빨간색으로 포인트 준 컨트랙트 주소를 클릭하시면 이 SmartContract에 대한 정보가 나와요!\n\nhttps://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png\n\n여기서 방금 배포한 이 SmartContract에 대해 Dapp을 만들기 위해선 Code부분의 ABI코드가 필수적이니 복사해서 따로 보관해주세요\n\n\n이제 저희는 어떠한 환경에서도 이 SmartContract를 사용할수가 있게되었습니다!!!!\n저는 Kovan 네트워크의 사용법을 익히고 Ganache를 잘 안쓰게 됬어요...ㅋㅋㅋㅋㅋㅋㅋ\n\n그럼 다음포스팅에서는 이 컨트랙트에 대한 간단한 웹을 만들어 보도록 할게요",
"json_metadata": "{\"tags\":[\"blockchain\",\"ethereum\",\"solidity\",\"kovan\"],\"image\":[\"https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png\",\"https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png\",\"https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png\",\"https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png\",\"https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png\",\"https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png\",\"https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png\",\"https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png\",\"https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png\",\"https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png\",\"https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png\"],\"links\":[\"https://kovan.etherscan.io/\",\"https://gitter.im/kovan-testnet/faucet\",\"https://remix.ethereum.org\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "1-contract-dapp",
"title": "가나슈가 아닌 이더리움 테스트넷 사용 (1.Kovan contract배포!)"
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T09:05:33",
"trx_id": "a8db82d79b50a4276b5614eebcbd4b3eb94c307b",
"trx_in_block": 22,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / 2-contract-dapp2019/03/28 08:57:54
minhokimupvoted (100.00%) @minhokim / 2-contract-dapp
2019/03/28 08:57:54
| author | minhokim |
| permlink | 2-contract-dapp |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #31544697/Trx 846abdf087a9490db86c550391967110a71c21ae |
View Raw JSON Data
{
"block": 31544697,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "2-contract-dapp",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T08:57:54",
"trx_id": "846abdf087a9490db86c550391967110a71c21ae",
"trx_in_block": 12,
"virtual_op": 0
}hackerzizonupvoted (5.00%) @minhokim / 2-contract-dapp2019/03/28 08:56:00
hackerzizonupvoted (5.00%) @minhokim / 2-contract-dapp
2019/03/28 08:56:00
| author | minhokim |
| permlink | 2-contract-dapp |
| voter | hackerzizon |
| weight | 500 (5.00%) |
| Transaction Info | Block #31544659/Trx 6b5019b2f0ce001f6be25df839c5f39a0da5cddf |
View Raw JSON Data
{
"block": 31544659,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "2-contract-dapp",
"voter": "hackerzizon",
"weight": 500
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T08:56:00",
"trx_id": "6b5019b2f0ce001f6be25df839c5f39a0da5cddf",
"trx_in_block": 14,
"virtual_op": 0
}minhokimpublished a new post: 2-contract-dapp2019/03/28 08:55:48
minhokimpublished a new post: 2-contract-dapp
2019/03/28 08:55:48
| author | minhokim |
| body | 안녕하세요 Kovan 네트워크 사용해 Dapp 만들기 2탄입니다! 저번 포스팅에서는 Smart Contract를 작성하고 Kovan 네트워크에 배포후 확인까지 했었죠 오늘은 직접 클라이언트 화면을 만들어 데이터를 넣고 가져오는 실습을 진행 하겠습니다! 아주 간단한 그냥 숫자를 입력해 블록에 저장하고, 블록에서 숫자를 가져오는 웹을 만들거예요. 오늘 하는 내용을 바탕으로 각자의 Smart Contract를 만들어서 더 발전시키면 개인 능력 향상에 정말 도움이 될거라 생각됩니다. 자 먼저 빈 react프로젝트를 생성하겠습니다. https://cdn.steemitimages.com/DQmdyvWZWG58KzNmmDmchUmZTLBqomAbHqSYmejgHRcnStb/image.png create-react-app 이라는 모듈을 설치하고, create-react-app 를 사용해 빈 react프로젝트를 생성할겁니다 -npm install -g create-react-app https://cdn.steemitimages.com/DQmTxjTcmPcwPj6ARyznevMowKKbF5Vn5AvKzNAt5BEVJ7v/image.png -create-react-app 폴더이름 이런식으로 빈 프로젝트를 생성해주시면 되겠습니다. 프로젝트를 VsCode를 사용해 열어주세요 https://cdn.steemitimages.com/DQmfVeKbSJzxLV7B2JNfFuPapiZRadDRenCrkSGNyCZsQX9/image.png 그리고 위 이미지처럼 아무폴더나 생성(저는 Abi라는 폴더)후 SimpleStorage.json이라는 파일을 하나 생성했습니다 바로 이부분에 저번시간에 배포했던 Contract의 Abi코드값을 넣을거예요! https://cdn.steemitimages.com/DQmWrNu8fGmbuvA7vkdVAP9r11ABWYQDvmrzWYuCRkSBebB/image.png SimpleStorage.json 파일안에 { "contactName":"SimpleStorage", "abi": [이부분에 Abi값을 붙여넣을거예요] } 직접 작성해주세요! 저번 시간에 Abi값 복사를 안하신분을 위해 다시한번 Abi값을 확인하는 법을 알려드릴게요. 자신의 Kovan 네트워크 이더계좌주소를 복사해주세요! https://cdn.steemitimages.com/DQmZTkro5SrXhdVH8SskuGoMMBnuPbhKQrS4Xr7xubcEsQV/image.png https://kovan.etherscan.io/ 에 가셔서 붙여넣기! https://cdn.steemitimages.com/DQmdzW2orVcvS6TMkcm9gEeEnhHF9sXJ83tQ2t2kqecLgQa/image.png Contract Creation이라고 써있는 부분을 눌러주시면 확인 가능합니다. https://cdn.steemitimages.com/DQmbfZKG9ZJcrx4b1B6KfTGn2m7j5Vb8dwQU9aCSTJXrP9A/image.png 그리고 그냥 붙여넣기 해주세요! 이제 App.js에 가서 직접 코드를 작성해보도록 할게요. 정말 간단한 프로젝트니 따로 컴포넌트를 나누지는 않을게요. https://cdn.steemitimages.com/DQmWxRUWdx6e5MGhQvYALY8zNbTtmo9Xsyuvi1D1xpyF6Z4/image.png 저희는 web3를 사용할거기 때문에 web3 모듈을 설치해주세요 https://cdn.steemitimages.com/DQmQi242XxMsTbRpkM5UXvsdVx9cYRGuWG2L432ZHsfksTk/image.png 상단에 web3와 저희가 추가했던 abi를 선언해주세요 그리고 가장중요한 abi를 사용하기위해 인스턴스화를 시켜야겠죠. const SimpleStorageInstance = new web3.eth.Contract(SimpleStorage.abi, '0x0b4B148C6AB76335899A1294c22f48964cB04869') 바로 이부분입니다. 앞에 변수는 abi파일을 추가하고, 뒤에변수는 전 시간에 배포한 컨트랙트의 주소를 써주면되요! <h3>이더계좌주소가 절대아닙니다! 컨트랙트의 주소예요!!</h3> https://cdn.steemitimages.com/DQmaebKXpA49cU9ZQvyAvWq2V5uTuYso6PgMjzxEvXsrgSS/image.png 그리고 세가지의 함수를 만들겠습니다. 블록에 데이터를 저장하는함수, 블록에서 데이터를 불러오는함수, handleChage 함수! SetDate함수를 봐주세요. this.state.SimpleStorageInstance.methods.set(this.state.data).send({ from : '자신의 이더리움 계좌주소'}) 이부분에서 직접 계좌주소를 입력할게요! web3에서 defaultAccount를 가져오는 방법도있는데 일단 직접 입력하겠습니다. https://cdn.steemitimages.com/DQmeLimu72FucikV5zUsxcxheaugcqxrLhAucwjuauJhB5m/image.png 두가지 변수를 추가해주세요! https://cdn.steemitimages.com/DQmUdQvNtbbnjyV73kG1iXMhFLsPqFNV4JGvytdayQs9jbK/image.png 그리고 클라이언트화면 입니다! 제가 예전에 작성했던 포스트를 읽어보시거나 기본적으로 이더리움 Dapp을 조금이라도 공부하셨던 분이라면 정말 무리없이 쉽게 코드를 작성하셨을거예요! 그래서 간단히만 설명했어요! 그리고 이제 npm start를 통해서 프로젝트를 실행해 보겠습니다. https://cdn.steemitimages.com/DQmcsyYnC6sGdQzsGCmkFFFNAfDfE35kRSfXQ5mHgtrKvUL/image.png 대충 아무런 숫자나 입력하고 버튼을 누르고 메타마스크 창에서 승인을 누르면 블록에 데이터가 저장됩니다! <h3>데이터는 숫자만 입력해주세요!</h3> Solidity 코드를 작성할때 저장되는 형식이 int형이였어요..ㅎ https://cdn.steemitimages.com/DQmQSrzreNC6qHQoqgk1APUbsdXYuTh13zcMeekeddh3Aho/image.png 이제 보시면 정상적으로 블록에서 데이터까지 가져오는걸 확인하실수가 있습니다. https://cdn.steemitimages.com/DQmbocZaecRsigedVZsEtmYfe95z8Ha8Lpu87YuSLBKTwrg/image.png 코반이더스캔에서도 tx가 정상적으로 생성되었죠! 이렇게 Kovan같은 네트워크를 사용하면 Ganache를 사용하면서 겪는 불편함 들이 사라집니다. 시간이 되시는 분은 Ropsten이나 Rinkby 이더리움 테스트넷도 한번 사용해보시길 권장드릴게요! |
| json metadata | {"tags":["blockchain","ethereum","solidity","kovan"],"image":["https://cdn.steemitimages.com/DQmdyvWZWG58KzNmmDmchUmZTLBqomAbHqSYmejgHRcnStb/image.png","https://cdn.steemitimages.com/DQmTxjTcmPcwPj6ARyznevMowKKbF5Vn5AvKzNAt5BEVJ7v/image.png","https://cdn.steemitimages.com/DQmfVeKbSJzxLV7B2JNfFuPapiZRadDRenCrkSGNyCZsQX9/image.png","https://cdn.steemitimages.com/DQmWrNu8fGmbuvA7vkdVAP9r11ABWYQDvmrzWYuCRkSBebB/image.png","https://cdn.steemitimages.com/DQmZTkro5SrXhdVH8SskuGoMMBnuPbhKQrS4Xr7xubcEsQV/image.png","https://cdn.steemitimages.com/DQmdzW2orVcvS6TMkcm9gEeEnhHF9sXJ83tQ2t2kqecLgQa/image.png","https://cdn.steemitimages.com/DQmbfZKG9ZJcrx4b1B6KfTGn2m7j5Vb8dwQU9aCSTJXrP9A/image.png","https://cdn.steemitimages.com/DQmWxRUWdx6e5MGhQvYALY8zNbTtmo9Xsyuvi1D1xpyF6Z4/image.png","https://cdn.steemitimages.com/DQmQi242XxMsTbRpkM5UXvsdVx9cYRGuWG2L432ZHsfksTk/image.png","https://cdn.steemitimages.com/DQmaebKXpA49cU9ZQvyAvWq2V5uTuYso6PgMjzxEvXsrgSS/image.png","https://cdn.steemitimages.com/DQmeLimu72FucikV5zUsxcxheaugcqxrLhAucwjuauJhB5m/image.png","https://cdn.steemitimages.com/DQmUdQvNtbbnjyV73kG1iXMhFLsPqFNV4JGvytdayQs9jbK/image.png","https://cdn.steemitimages.com/DQmcsyYnC6sGdQzsGCmkFFFNAfDfE35kRSfXQ5mHgtrKvUL/image.png","https://cdn.steemitimages.com/DQmQSrzreNC6qHQoqgk1APUbsdXYuTh13zcMeekeddh3Aho/image.png","https://cdn.steemitimages.com/DQmbocZaecRsigedVZsEtmYfe95z8Ha8Lpu87YuSLBKTwrg/image.png"],"links":["https://kovan.etherscan.io/"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 2-contract-dapp |
| title | 가나슈가 아닌 이더리움 테스트넷 사용(2. 배포된 Contract이용 Dapp만들기) |
| Transaction Info | Block #31544655/Trx 1cafa5d8b8c9d3a8effc71af3663269da8afc59e |
View Raw JSON Data
{
"block": 31544655,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요\n\nKovan 네트워크 사용해 Dapp 만들기 2탄입니다!\n\n저번 포스팅에서는 Smart Contract를 작성하고 Kovan 네트워크에 배포후 확인까지 했었죠\n\n오늘은 직접 클라이언트 화면을 만들어 데이터를 넣고 가져오는 실습을 진행 하겠습니다!\n\n아주 간단한 그냥 숫자를 입력해 블록에 저장하고, 블록에서 숫자를 가져오는 웹을 만들거예요.\n\n오늘 하는 내용을 바탕으로 각자의 Smart Contract를 만들어서 더 발전시키면 개인 능력 향상에 정말 도움이 될거라 생각됩니다.\n\n자 먼저 빈 react프로젝트를 생성하겠습니다.\n\nhttps://cdn.steemitimages.com/DQmdyvWZWG58KzNmmDmchUmZTLBqomAbHqSYmejgHRcnStb/image.png\n\ncreate-react-app 이라는 모듈을 설치하고, create-react-app 를 사용해 빈 react프로젝트를 생성할겁니다\n\n-npm install -g create-react-app\n\nhttps://cdn.steemitimages.com/DQmTxjTcmPcwPj6ARyznevMowKKbF5Vn5AvKzNAt5BEVJ7v/image.png\n\n-create-react-app 폴더이름\n\n이런식으로 빈 프로젝트를 생성해주시면 되겠습니다. \n\n프로젝트를 VsCode를 사용해 열어주세요 \n\nhttps://cdn.steemitimages.com/DQmfVeKbSJzxLV7B2JNfFuPapiZRadDRenCrkSGNyCZsQX9/image.png\n\n그리고 위 이미지처럼 아무폴더나 생성(저는 Abi라는 폴더)후 SimpleStorage.json이라는 파일을 하나 생성했습니다\n\n바로 이부분에 저번시간에 배포했던 Contract의 Abi코드값을 넣을거예요!\n\nhttps://cdn.steemitimages.com/DQmWrNu8fGmbuvA7vkdVAP9r11ABWYQDvmrzWYuCRkSBebB/image.png\n\nSimpleStorage.json 파일안에 \n\n{\n \"contactName\":\"SimpleStorage\",\n \"abi\": [이부분에 Abi값을 붙여넣을거예요]\n}\n\n직접 작성해주세요!\n\n저번 시간에 Abi값 복사를 안하신분을 위해 다시한번 Abi값을 확인하는 법을 알려드릴게요.\n\n자신의 Kovan 네트워크 이더계좌주소를 복사해주세요!\n\n\nhttps://cdn.steemitimages.com/DQmZTkro5SrXhdVH8SskuGoMMBnuPbhKQrS4Xr7xubcEsQV/image.png\n\nhttps://kovan.etherscan.io/ 에 가셔서 붙여넣기!\n\n\nhttps://cdn.steemitimages.com/DQmdzW2orVcvS6TMkcm9gEeEnhHF9sXJ83tQ2t2kqecLgQa/image.png\n\nContract Creation이라고 써있는 부분을 눌러주시면 확인 가능합니다.\n\nhttps://cdn.steemitimages.com/DQmbfZKG9ZJcrx4b1B6KfTGn2m7j5Vb8dwQU9aCSTJXrP9A/image.png\n\n그리고 그냥 붙여넣기 해주세요!\n\n이제 App.js에 가서 직접 코드를 작성해보도록 할게요.\n\n정말 간단한 프로젝트니 따로 컴포넌트를 나누지는 않을게요.\n\n\nhttps://cdn.steemitimages.com/DQmWxRUWdx6e5MGhQvYALY8zNbTtmo9Xsyuvi1D1xpyF6Z4/image.png\n\n저희는 web3를 사용할거기 때문에 web3 모듈을 설치해주세요\n\nhttps://cdn.steemitimages.com/DQmQi242XxMsTbRpkM5UXvsdVx9cYRGuWG2L432ZHsfksTk/image.png\n\n상단에 web3와 저희가 추가했던 abi를 선언해주세요\n그리고 가장중요한 abi를 사용하기위해 인스턴스화를 시켜야겠죠.\n\n const SimpleStorageInstance = new web3.eth.Contract(SimpleStorage.abi, '0x0b4B148C6AB76335899A1294c22f48964cB04869')\n\n바로 이부분입니다. 앞에 변수는 abi파일을 추가하고, 뒤에변수는 전 시간에 배포한 컨트랙트의 주소를 써주면되요!\n\n<h3>이더계좌주소가 절대아닙니다! 컨트랙트의 주소예요!!</h3>\n\n\nhttps://cdn.steemitimages.com/DQmaebKXpA49cU9ZQvyAvWq2V5uTuYso6PgMjzxEvXsrgSS/image.png\n\n그리고 세가지의 함수를 만들겠습니다.\n\n블록에 데이터를 저장하는함수, 블록에서 데이터를 불러오는함수, handleChage 함수!\n\nSetDate함수를 봐주세요.\n\n this.state.SimpleStorageInstance.methods.set(this.state.data).send({ from : '자신의 이더리움 계좌주소'})\n\n이부분에서 직접 계좌주소를 입력할게요! web3에서 defaultAccount를 가져오는 방법도있는데 일단 직접 입력하겠습니다.\n\nhttps://cdn.steemitimages.com/DQmeLimu72FucikV5zUsxcxheaugcqxrLhAucwjuauJhB5m/image.png\n\n두가지 변수를 추가해주세요! \n\nhttps://cdn.steemitimages.com/DQmUdQvNtbbnjyV73kG1iXMhFLsPqFNV4JGvytdayQs9jbK/image.png\n\n그리고 클라이언트화면 입니다!\n\n제가 예전에 작성했던 포스트를 읽어보시거나 기본적으로 이더리움 Dapp을 조금이라도 공부하셨던 분이라면\n\n정말 무리없이 쉽게 코드를 작성하셨을거예요! 그래서 간단히만 설명했어요!\n\n그리고 이제 npm start를 통해서 프로젝트를 실행해 보겠습니다.\n\nhttps://cdn.steemitimages.com/DQmcsyYnC6sGdQzsGCmkFFFNAfDfE35kRSfXQ5mHgtrKvUL/image.png\n\n대충 아무런 숫자나 입력하고 버튼을 누르고 메타마스크 창에서 승인을 누르면 블록에 데이터가 저장됩니다!\n\n<h3>데이터는 숫자만 입력해주세요!</h3>\n\n Solidity 코드를 작성할때 저장되는 형식이 int형이였어요..ㅎ\n\nhttps://cdn.steemitimages.com/DQmQSrzreNC6qHQoqgk1APUbsdXYuTh13zcMeekeddh3Aho/image.png\n\n이제 보시면 정상적으로 블록에서 데이터까지 가져오는걸 확인하실수가 있습니다.\n\nhttps://cdn.steemitimages.com/DQmbocZaecRsigedVZsEtmYfe95z8Ha8Lpu87YuSLBKTwrg/image.png\n\n코반이더스캔에서도 tx가 정상적으로 생성되었죠!\n\n\n이렇게 Kovan같은 네트워크를 사용하면 Ganache를 사용하면서 겪는 불편함 들이 사라집니다.\n \n시간이 되시는 분은 Ropsten이나 Rinkby 이더리움 테스트넷도 한번 사용해보시길 권장드릴게요!",
"json_metadata": "{\"tags\":[\"blockchain\",\"ethereum\",\"solidity\",\"kovan\"],\"image\":[\"https://cdn.steemitimages.com/DQmdyvWZWG58KzNmmDmchUmZTLBqomAbHqSYmejgHRcnStb/image.png\",\"https://cdn.steemitimages.com/DQmTxjTcmPcwPj6ARyznevMowKKbF5Vn5AvKzNAt5BEVJ7v/image.png\",\"https://cdn.steemitimages.com/DQmfVeKbSJzxLV7B2JNfFuPapiZRadDRenCrkSGNyCZsQX9/image.png\",\"https://cdn.steemitimages.com/DQmWrNu8fGmbuvA7vkdVAP9r11ABWYQDvmrzWYuCRkSBebB/image.png\",\"https://cdn.steemitimages.com/DQmZTkro5SrXhdVH8SskuGoMMBnuPbhKQrS4Xr7xubcEsQV/image.png\",\"https://cdn.steemitimages.com/DQmdzW2orVcvS6TMkcm9gEeEnhHF9sXJ83tQ2t2kqecLgQa/image.png\",\"https://cdn.steemitimages.com/DQmbfZKG9ZJcrx4b1B6KfTGn2m7j5Vb8dwQU9aCSTJXrP9A/image.png\",\"https://cdn.steemitimages.com/DQmWxRUWdx6e5MGhQvYALY8zNbTtmo9Xsyuvi1D1xpyF6Z4/image.png\",\"https://cdn.steemitimages.com/DQmQi242XxMsTbRpkM5UXvsdVx9cYRGuWG2L432ZHsfksTk/image.png\",\"https://cdn.steemitimages.com/DQmaebKXpA49cU9ZQvyAvWq2V5uTuYso6PgMjzxEvXsrgSS/image.png\",\"https://cdn.steemitimages.com/DQmeLimu72FucikV5zUsxcxheaugcqxrLhAucwjuauJhB5m/image.png\",\"https://cdn.steemitimages.com/DQmUdQvNtbbnjyV73kG1iXMhFLsPqFNV4JGvytdayQs9jbK/image.png\",\"https://cdn.steemitimages.com/DQmcsyYnC6sGdQzsGCmkFFFNAfDfE35kRSfXQ5mHgtrKvUL/image.png\",\"https://cdn.steemitimages.com/DQmQSrzreNC6qHQoqgk1APUbsdXYuTh13zcMeekeddh3Aho/image.png\",\"https://cdn.steemitimages.com/DQmbocZaecRsigedVZsEtmYfe95z8Ha8Lpu87YuSLBKTwrg/image.png\"],\"links\":[\"https://kovan.etherscan.io/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "2-contract-dapp",
"title": "가나슈가 아닌 이더리움 테스트넷 사용(2. 배포된 Contract이용 Dapp만들기)"
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T08:55:48",
"trx_id": "1cafa5d8b8c9d3a8effc71af3663269da8afc59e",
"trx_in_block": 3,
"virtual_op": 0
}hackerzizonupvoted (5.00%) @minhokim / 1-contract-dapp2019/03/28 08:23:18
hackerzizonupvoted (5.00%) @minhokim / 1-contract-dapp
2019/03/28 08:23:18
| author | minhokim |
| permlink | 1-contract-dapp |
| voter | hackerzizon |
| weight | 500 (5.00%) |
| Transaction Info | Block #31544006/Trx 163b293a8d860a858b91cb4afd22cfb4eabb50eb |
View Raw JSON Data
{
"block": 31544006,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "1-contract-dapp",
"voter": "hackerzizon",
"weight": 500
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T08:23:18",
"trx_id": "163b293a8d860a858b91cb4afd22cfb4eabb50eb",
"trx_in_block": 5,
"virtual_op": 0
}minhokimpublished a new post: 1-contract-dapp2019/03/28 08:22:42
minhokimpublished a new post: 1-contract-dapp
2019/03/28 08:22:42
| author | minhokim |
| body | 안녕하세요. 지금까지는 제가 Dapp을 만들때 항상 Ganache를 사용했습니다. 하지만 저같은 개인 개발자는 노트북 하나로 개발을 하기때문에.. Ganache를 24시간 켜놀수가 없기에 항상 컴퓨터를 새로키면 Ganache를 새로 열어서 다시 Contract를 배포하고.. 새로운 블록체인 환경에서 이어서 개발을 했었죠! 메타마스크를 써보신분이라면 Ropsten, Kovan, Rinkeby 이 세가지를 아마도 보셨을거예요. 저는 항상 Ganache를 사용했기때문에 로컬호스트로 메타마스크를 사용했었죠! 위에서 언급한 세가지의 네트워크를 사용한다면, Ganache를 사용했을때처럼 컴퓨터를 킬때마다 Contract를 배포해줄 필요가 없습니다! 정말 이더리움 네트워크처럼 동작을 하기에, 테스트하기에도 훨씬 용이하다고 생각해요! 위 세개중에 오늘은 Kovan에 대해 설명드리고 직접 실습을 진행해보려고 합니다! Kovan etherscan 주소 :https://kovan.etherscan.io/ Kovan faucet 주소 : https://gitter.im/kovan-testnet/faucet Kovan은 Parity라는 프로그램을 통해서 직접 채굴도 할수있고 Geth와 정말 비슷하다고 생각되는데 지금은 Parity는 쓰지 않을거예요. 그럼 ether를 어디서 받냐구요?? 위에 적어둔 Kovan faucet 주소로 들어가셔서 가입하시고 구걸(?) 하시면 ... 3이더씩 주더라구요 ㅋㅋㅋㅋㅋㅋㅋㅋ 3이더면 테스트 하기 충분한 이더라고 생각해요................ https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png 이렇게 메타마스크에서 Kovan에 연결하시면 자신의 계좌 주소가 나오는데 저 주소를 위 faucet홈페이지로 들어가셔서 그냥 써주시면 됩니다 https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png 그러면 3~5분정도 후에 3이더가 들어와 있을거예요! 그럼 이제 직접 SmartContract를 배포해 볼게요! Parity.exe를 사용한다면 Ganache와 비슷한 방법으로 컨트랙트를 작성하고 배포할수가 있는데, 오늘은 Remix IDE를 사용해서 배포할거예요. 제가 확신하지만 훨씬 편하다고 느끼실 겁니다.......... 자 먼저 컨트랙트를 만들어서 Kovan 네트워크에 배포해보도록 하죠! 위에서도 언급했듯이 Remix IDE를 사용해서 Kovan 네트워크에 배포를 할거예요! <h3>Remix주소 : https://remix.ethereum.org</h3> https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png 자! 접속하셨으면 위와 같은 페이지가 나올텐데 위와 같이 간단한 코드를 입력해주세요! pragma solidity ^0.4.18; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } } truffle unbox로 react 프로젝트를 생성하면 나오는 기본 코드예요 그냥 숫자를 블록에 저장하고 가져오는 정말 간단한 아주아주 간단한 코드입니다. https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png 먼저 컨파일러 버전을 선택해주세요. https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png 자동 컴파일이 되고 이렇게 오류없이 깔끔하게 나올거예요 위에 빨간색으로 포인트 준곳을 선택하시고, 이제 Kovan 네트워크에 배포를 하보겠습니다 faucet에서 Kovan네트워크 전용 이더를 받으셨으면 메타마스크를 Kovan네트워크에 연결시켜주세요! https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png 다시 Remix IDE 페이지로 돌아와서 아래와 같이 Inject Web3를 선택하시면 자동으로 kovan 계좌가 연동이되고, Deploy를 클릭하시면 드디어 Kovan네트워크에 SmartContract가 배포가 됩니다 https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png 승인을 눌러주시면 배포가 완료됩니닿 당연히 가스비는 빠져나가구요! https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png 위 이미지처럼 트랜잭션이 일어나고 저기 써있는 주소로 들어가서 정말 배포가 잘되었는지 확인을 해봅시다! https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png 위와 같은 화면이 출력된다면 정상적으로 배포가 잘되고 블록에 컨트랙트가 저장이 된거예요! Kovan 네트워크의 장점은 트랜잭션이 처리되는 시간이 단 4초에 불과하다는 거죠. 속도가 굉장히 빨라서 테스트넷으로 사용하기에 아주 적합하다고 할수있습니다 ㅎㅎ 빨간색으로 포인트 준 컨트랙트 주소를 클릭하시면 이 SmartContract에 대한 정보가 나와요! https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png 여기서 방금 배포한 이 SmartContract에 대해 Dapp을 만들기 위해선 Code부분의 ABI코드가 필수적이니 복사해서 따로 보관해주세요 이제 저희는 어떠한 환경에서도 이 SmartContract를 사용할수가 있게되었습니다!!!! 저는 Kovan 네트워크의 사용법을 익히고 Ganache를 잘 안쓰게 됬어요...ㅋㅋㅋㅋㅋㅋㅋ 그럼 다음포스팅에서는 이 컨트랙트에 대한 간단한 웹을 만들어 보도록 할게요 |
| json metadata | {"tags":["blockchain","ethereum","solidity","kovan"],"image":["https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png","https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png","https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png","https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png","https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png","https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png","https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png","https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png","https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png","https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png","https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png"],"links":["https://kovan.etherscan.io/","https://gitter.im/kovan-testnet/faucet","https://remix.ethereum.org"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 1-contract-dapp |
| title | 가나슈가 아닌 이더리움 테스트넷 사용(1. contract배포!) |
| Transaction Info | Block #31543994/Trx 30ba4f8e0adc9cbaa827894fd149a4523f1195b2 |
View Raw JSON Data
{
"block": 31543994,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요.\n\n지금까지는 제가 Dapp을 만들때 항상 Ganache를 사용했습니다.\n\n하지만 저같은 개인 개발자는 노트북 하나로 개발을 하기때문에.. Ganache를 24시간 켜놀수가 없기에 항상 컴퓨터를 새로키면 Ganache를 새로 열어서 다시 Contract를 배포하고..\n\n새로운 블록체인 환경에서 이어서 개발을 했었죠!\n\n메타마스크를 써보신분이라면 Ropsten, Kovan, Rinkeby 이 세가지를 아마도 보셨을거예요.\n\n저는 항상 Ganache를 사용했기때문에 로컬호스트로 메타마스크를 사용했었죠!\n\n위에서 언급한 세가지의 네트워크를 사용한다면, Ganache를 사용했을때처럼 컴퓨터를 킬때마다 Contract를 배포해줄 필요가 없습니다!\n\n정말 이더리움 네트워크처럼 동작을 하기에, 테스트하기에도 훨씬 용이하다고 생각해요!\n\n위 세개중에 오늘은 Kovan에 대해 설명드리고 직접 실습을 진행해보려고 합니다!\n\nKovan etherscan 주소 :https://kovan.etherscan.io/\nKovan faucet 주소 : https://gitter.im/kovan-testnet/faucet\n\nKovan은 Parity라는 프로그램을 통해서 직접 채굴도 할수있고 Geth와 정말 비슷하다고 생각되는데\n지금은 Parity는 쓰지 않을거예요.\n\n그럼 ether를 어디서 받냐구요?? \n위에 적어둔 Kovan faucet 주소로 들어가셔서 가입하시고 구걸(?) 하시면 ... 3이더씩 주더라구요 ㅋㅋㅋㅋㅋㅋㅋㅋ\n\n3이더면 테스트 하기 충분한 이더라고 생각해요................\n\nhttps://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png\n\n이렇게 메타마스크에서 Kovan에 연결하시면 자신의 계좌 주소가 나오는데 저 주소를 위 faucet홈페이지로 들어가셔서 그냥 써주시면 됩니다\n\nhttps://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png\n\n그러면 3~5분정도 후에 3이더가 들어와 있을거예요! \n\n그럼 이제 직접 SmartContract를 배포해 볼게요!\n\nParity.exe를 사용한다면 Ganache와 비슷한 방법으로 컨트랙트를 작성하고 배포할수가 있는데, \n오늘은 Remix IDE를 사용해서 배포할거예요. \n\n제가 확신하지만 훨씬 편하다고 느끼실 겁니다..........\n\n자 먼저 컨트랙트를 만들어서 Kovan 네트워크에 배포해보도록 하죠!\n\n위에서도 언급했듯이 Remix IDE를 사용해서 Kovan 네트워크에 배포를 할거예요!\n\n<h3>Remix주소 : https://remix.ethereum.org</h3>\n\nhttps://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png\n\n자! 접속하셨으면 위와 같은 페이지가 나올텐데 위와 같이 간단한 코드를 입력해주세요!\n\npragma solidity ^0.4.18;\n\ncontract SimpleStorage {\n uint storedData;\n\n function set(uint x) public {\n storedData = x;\n }\n\n function get() public view returns (uint) {\n return storedData;\n }\n}\n\ntruffle unbox로 react 프로젝트를 생성하면 나오는 기본 코드예요 \n그냥 숫자를 블록에 저장하고 가져오는 정말 간단한 아주아주 간단한 코드입니다.\n\nhttps://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png\n\n먼저 컨파일러 버전을 선택해주세요.\n\nhttps://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png\n\n자동 컴파일이 되고 이렇게 오류없이 깔끔하게 나올거예요\n\n위에 빨간색으로 포인트 준곳을 선택하시고, 이제 Kovan 네트워크에 배포를 하보겠습니다\n\n\nfaucet에서 Kovan네트워크 전용 이더를 받으셨으면 메타마스크를 Kovan네트워크에 연결시켜주세요!\nhttps://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png\n\n\n다시 Remix IDE 페이지로 돌아와서 아래와 같이 Inject Web3를 선택하시면 자동으로 kovan 계좌가 연동이되고,\nDeploy를 클릭하시면 드디어 Kovan네트워크에 SmartContract가 배포가 됩니다\n\nhttps://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png\n\nhttps://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png\n\n승인을 눌러주시면 배포가 완료됩니닿 당연히 가스비는 빠져나가구요!\n\nhttps://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png\n\n위 이미지처럼 트랜잭션이 일어나고 저기 써있는 주소로 들어가서 정말 배포가 잘되었는지 확인을 해봅시다!\n\nhttps://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png\n\n위와 같은 화면이 출력된다면 정상적으로 배포가 잘되고 블록에 컨트랙트가 저장이 된거예요!\n\nKovan 네트워크의 장점은 트랜잭션이 처리되는 시간이 단 4초에 불과하다는 거죠. 속도가 굉장히 빨라서 테스트넷으로 사용하기에 아주 적합하다고 할수있습니다 ㅎㅎ\n\n빨간색으로 포인트 준 컨트랙트 주소를 클릭하시면 이 SmartContract에 대한 정보가 나와요!\n\nhttps://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png\n\n여기서 방금 배포한 이 SmartContract에 대해 Dapp을 만들기 위해선 Code부분의 ABI코드가 필수적이니 복사해서 따로 보관해주세요\n\n\n이제 저희는 어떠한 환경에서도 이 SmartContract를 사용할수가 있게되었습니다!!!!\n저는 Kovan 네트워크의 사용법을 익히고 Ganache를 잘 안쓰게 됬어요...ㅋㅋㅋㅋㅋㅋㅋ\n\n그럼 다음포스팅에서는 이 컨트랙트에 대한 간단한 웹을 만들어 보도록 할게요",
"json_metadata": "{\"tags\":[\"blockchain\",\"ethereum\",\"solidity\",\"kovan\"],\"image\":[\"https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png\",\"https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png\",\"https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png\",\"https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png\",\"https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png\",\"https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png\",\"https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png\",\"https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png\",\"https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png\",\"https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png\",\"https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png\"],\"links\":[\"https://kovan.etherscan.io/\",\"https://gitter.im/kovan-testnet/faucet\",\"https://remix.ethereum.org\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "1-contract-dapp",
"title": "가나슈가 아닌 이더리움 테스트넷 사용(1. contract배포!)"
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T08:22:42",
"trx_id": "30ba4f8e0adc9cbaa827894fd149a4523f1195b2",
"trx_in_block": 10,
"virtual_op": 0
}minhokimpublished a new post: 1-contract-dapp2019/03/28 06:51:51
minhokimpublished a new post: 1-contract-dapp
2019/03/28 06:51:51
| author | minhokim |
| body | 안녕하세요. 지금까지는 제가 Dapp을 만들때 항상 Ganache를 사용했습니다. 하지만 저같은 개인 개발자는 노트북 하나로 개발을 하기때문에.. Ganache를 24시간 켜놀수가 없기에 항상 컴퓨터를 새로키면 Ganache를 새로 열어서 다시 Contract를 배포하고.. 새로운 블록체인 환경에서 이어서 개발을 했었죠! 메타마스크를 써보신분이라면 Ropsten, Kovan, Rinkeby 이 세가지를 아마도 보셨을거예요. 저는 항상 Ganache를 사용했기때문에 로컬호스트로 메타마스크를 사용했었죠! 위에서 언급한 세가지의 네트워크를 사용한다면, Ganache를 사용했을때처럼 컴퓨터를 킬때마다 Contract를 배포해줄 필요가 없습니다! 정말 이더리움 네트워크처럼 동작을 하기에, 테스트하기에도 훨씬 용이하다고 생각해요! 위 세개중에 오늘은 Kovan에 대해 설명드리고 직접 실습을 진행해보려고 합니다! Kovan etherscan 주소 :https://kovan.etherscan.io/ Kovan faucet 주소 : https://gitter.im/kovan-testnet/faucet Kovan은 Parity라는 프로그램을 통해서 직접 채굴도 할수있고 Geth와 정말 비슷하다고 생각되는데 지금은 Parity는 쓰지 않을거예요. 그럼 ether를 어디서 받냐구요?? 위에 적어둔 Kovan faucet 주소로 들어가셔서 가입하시고 구걸(?) 하시면 ... 3이더씩 주더라구요 ㅋㅋㅋㅋㅋㅋㅋㅋ 3이더면 테스트 하기 충분한 이더라고 생각해요................ https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png 이렇게 메타마스크에서 Kovan에 연결하시면 자신의 계좌 주소가 나오는데 저 주소를 위 faucet홈페이지로 들어가셔서 그냥 써주시면 됩니다 https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png 그러면 3~5분정도 후에 3이더가 들어와 있을거예요! 그럼 이제 직접 SmartContract를 배포해 볼게요! Parity.exe를 사용한다면 Ganache와 비슷한 방법으로 컨트랙트를 작성하고 배포할수가 있는데, 오늘은 Remix IDE를 사용해서 배포할거예요. 제가 확신하지만 훨씬 편하다고 느끼실 겁니다.......... 자 먼저 컨트랙트를 만들어서 Kovan 네트워크에 배포해보도록 하죠! 위에서도 언급했듯이 Remix IDE를 사용해서 Kovan 네트워크에 배포를 할거예요! <h3>Remix주소 : https://remix.ethereum.org</h3> https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png 자! 접속하셨으면 위와 같은 페이지가 나올텐데 위와 같이 간단한 코드를 입력해주세요! pragma solidity ^0.4.18; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } } truffle unbox로 react 프로젝트를 생성하면 나오는 기본 코드예요 그냥 숫자를 블록에 저장하고 가져오는 정말 간단한 아주아주 간단한 코드입니다. https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png 먼저 컨파일러 버전을 선택해주세요. https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png 자동 컴파일이 되고 이렇게 오류없이 깔끔하게 나올거예요 위에 빨간색으로 포인트 준곳을 선택하시고, 이제 Kovan 네트워크에 배포를 하보겠습니다 faucet에서 Kovan네트워크 전용 이더를 받으셨으면 메타마스크를 Kovan네트워크에 연결시켜주세요! https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png 다시 Remix IDE 페이지로 돌아와서 아래와 같이 Inject Web3를 선택하시면 자동으로 kovan 계좌가 연동이되고, Deploy를 클릭하시면 드디어 Kovan네트워크에 SmartContract가 배포가 됩니다 https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png 승인을 눌러주시면 배포가 완료됩니닿 당연히 가스비는 빠져나가구요! https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png 위 이미지처럼 트랜잭션이 일어나고 저기 써있는 주소로 들어가서 정말 배포가 잘되었는지 확인을 해봅시다! https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png 위와 같은 화면이 출력된다면 정상적으로 배포가 잘되고 블록에 컨트랙트가 저장이 된거예요! Kovan 네트워크의 장점은 트랜잭션이 처리되는 시간이 단 4초에 불과하다는 거죠. 속도가 굉장히 빨라서 테스트넷으로 사용하기에 아주 적합하다고 할수있습니다 ㅎㅎ 빨간색으로 포인트 준 컨트랙트 주소를 클릭하시면 이 SmartContract에 대한 정보가 나와요! https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png 여기서 방금 배포한 이 SmartContract에 대해 Dapp을 만들기 위해선 Code부분의 ABI코드가 필수적이니 복사해서 따로 보관해주세요 이제 저희는 어떠한 환경에서도 이 SmartContract를 사용할수가 있게되었습니다!!!! 저는 Kovan 네트워크의 사용법을 익히고 Ganache를 잘 안쓰게 됬어요...ㅋㅋㅋㅋㅋㅋㅋ 그럼 다음포스팅에서는 이 컨트랙트에 대한 간단한 웹을 만들어 보도록 할게요 |
| json metadata | {"tags":["blockchain","ethereum","solidity","kovan"],"image":["https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png","https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png","https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png","https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png","https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png","https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png","https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png","https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png","https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png","https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png","https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png"],"links":["https://kovan.etherscan.io/","https://gitter.im/kovan-testnet/faucet","https://remix.ethereum.org"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 1-contract-dapp |
| title | 가나슈가 아닌 이더리움 테스트넷 사용(1. 배포된 Contract이용 Dapp만들기) |
| Transaction Info | Block #31542177/Trx eed40fc8010f39b0b7505ed78481d601bddda54f |
View Raw JSON Data
{
"block": 31542177,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요.\n\n지금까지는 제가 Dapp을 만들때 항상 Ganache를 사용했습니다.\n\n하지만 저같은 개인 개발자는 노트북 하나로 개발을 하기때문에.. Ganache를 24시간 켜놀수가 없기에 항상 컴퓨터를 새로키면 Ganache를 새로 열어서 다시 Contract를 배포하고..\n\n새로운 블록체인 환경에서 이어서 개발을 했었죠!\n\n메타마스크를 써보신분이라면 Ropsten, Kovan, Rinkeby 이 세가지를 아마도 보셨을거예요.\n\n저는 항상 Ganache를 사용했기때문에 로컬호스트로 메타마스크를 사용했었죠!\n\n위에서 언급한 세가지의 네트워크를 사용한다면, Ganache를 사용했을때처럼 컴퓨터를 킬때마다 Contract를 배포해줄 필요가 없습니다!\n\n정말 이더리움 네트워크처럼 동작을 하기에, 테스트하기에도 훨씬 용이하다고 생각해요!\n\n위 세개중에 오늘은 Kovan에 대해 설명드리고 직접 실습을 진행해보려고 합니다!\n\nKovan etherscan 주소 :https://kovan.etherscan.io/\nKovan faucet 주소 : https://gitter.im/kovan-testnet/faucet\n\nKovan은 Parity라는 프로그램을 통해서 직접 채굴도 할수있고 Geth와 정말 비슷하다고 생각되는데\n지금은 Parity는 쓰지 않을거예요.\n\n그럼 ether를 어디서 받냐구요?? \n위에 적어둔 Kovan faucet 주소로 들어가셔서 가입하시고 구걸(?) 하시면 ... 3이더씩 주더라구요 ㅋㅋㅋㅋㅋㅋㅋㅋ\n\n3이더면 테스트 하기 충분한 이더라고 생각해요................\n\nhttps://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png\n\n이렇게 메타마스크에서 Kovan에 연결하시면 자신의 계좌 주소가 나오는데 저 주소를 위 faucet홈페이지로 들어가셔서 그냥 써주시면 됩니다\n\nhttps://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png\n\n그러면 3~5분정도 후에 3이더가 들어와 있을거예요! \n\n그럼 이제 직접 SmartContract를 배포해 볼게요!\n\nParity.exe를 사용한다면 Ganache와 비슷한 방법으로 컨트랙트를 작성하고 배포할수가 있는데, \n오늘은 Remix IDE를 사용해서 배포할거예요. \n\n제가 확신하지만 훨씬 편하다고 느끼실 겁니다..........\n\n자 먼저 컨트랙트를 만들어서 Kovan 네트워크에 배포해보도록 하죠!\n\n위에서도 언급했듯이 Remix IDE를 사용해서 Kovan 네트워크에 배포를 할거예요!\n\n<h3>Remix주소 : https://remix.ethereum.org</h3>\n\nhttps://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png\n\n자! 접속하셨으면 위와 같은 페이지가 나올텐데 위와 같이 간단한 코드를 입력해주세요!\n\npragma solidity ^0.4.18;\n\ncontract SimpleStorage {\n uint storedData;\n\n function set(uint x) public {\n storedData = x;\n }\n\n function get() public view returns (uint) {\n return storedData;\n }\n}\n\ntruffle unbox로 react 프로젝트를 생성하면 나오는 기본 코드예요 \n그냥 숫자를 블록에 저장하고 가져오는 정말 간단한 아주아주 간단한 코드입니다.\n\nhttps://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png\n\n먼저 컨파일러 버전을 선택해주세요.\n\nhttps://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png\n\n자동 컴파일이 되고 이렇게 오류없이 깔끔하게 나올거예요\n\n위에 빨간색으로 포인트 준곳을 선택하시고, 이제 Kovan 네트워크에 배포를 하보겠습니다\n\n\nfaucet에서 Kovan네트워크 전용 이더를 받으셨으면 메타마스크를 Kovan네트워크에 연결시켜주세요!\nhttps://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png\n\n\n다시 Remix IDE 페이지로 돌아와서 아래와 같이 Inject Web3를 선택하시면 자동으로 kovan 계좌가 연동이되고,\nDeploy를 클릭하시면 드디어 Kovan네트워크에 SmartContract가 배포가 됩니다\n\nhttps://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png\n\nhttps://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png\n\n승인을 눌러주시면 배포가 완료됩니닿 당연히 가스비는 빠져나가구요!\n\nhttps://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png\n\n위 이미지처럼 트랜잭션이 일어나고 저기 써있는 주소로 들어가서 정말 배포가 잘되었는지 확인을 해봅시다!\n\nhttps://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png\n\n위와 같은 화면이 출력된다면 정상적으로 배포가 잘되고 블록에 컨트랙트가 저장이 된거예요!\n\nKovan 네트워크의 장점은 트랜잭션이 처리되는 시간이 단 4초에 불과하다는 거죠. 속도가 굉장히 빨라서 테스트넷으로 사용하기에 아주 적합하다고 할수있습니다 ㅎㅎ\n\n빨간색으로 포인트 준 컨트랙트 주소를 클릭하시면 이 SmartContract에 대한 정보가 나와요!\n\nhttps://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png\n\n여기서 방금 배포한 이 SmartContract에 대해 Dapp을 만들기 위해선 Code부분의 ABI코드가 필수적이니 복사해서 따로 보관해주세요\n\n\n이제 저희는 어떠한 환경에서도 이 SmartContract를 사용할수가 있게되었습니다!!!!\n저는 Kovan 네트워크의 사용법을 익히고 Ganache를 잘 안쓰게 됬어요...ㅋㅋㅋㅋㅋㅋㅋ\n\n그럼 다음포스팅에서는 이 컨트랙트에 대한 간단한 웹을 만들어 보도록 할게요",
"json_metadata": "{\"tags\":[\"blockchain\",\"ethereum\",\"solidity\",\"kovan\"],\"image\":[\"https://cdn.steemitimages.com/DQmYiRpeL2Y7w51TF8Nfhing1bbrBngZjE2PsA6obv5jA66/image.png\",\"https://cdn.steemitimages.com/DQmYwhM9Fi7kZWivF1R6KufruAdKkhzLqUPjiz7e1Deqv5R/image.png\",\"https://cdn.steemitimages.com/DQmNj2CnDJLhiWVgKg2Mii4PKnFd9rvg2FrhJa2rEEaMDy4/image.png\",\"https://cdn.steemitimages.com/DQmV3ejHp1AvHB27QDT2qVEMzfs3QnwD3bnKbEpDuj87NYX/image.png\",\"https://cdn.steemitimages.com/DQmagEuZ4t4UX6w3QctrtFV75EeaV91Y92sWg5cY4H1M1UU/image.png\",\"https://cdn.steemitimages.com/DQmfPXk5P8QR6Ed8WK9oxiTW5LY8SFYg1cE3evYKuwrupzA/image.png\",\"https://cdn.steemitimages.com/DQmdEcJskog2ajgGuYvNh4882bf73UeKKhA88oDCTGyRQ6u/image.png\",\"https://cdn.steemitimages.com/DQmYVCaWLH1hx1huifNWrknhBvSukJyG8dorgP5JCssVecf/image.png\",\"https://cdn.steemitimages.com/DQmdYEkLdpkztYFP89MnHS3tW69zKcZYPkZSrPzibWGXTQ5/image.png\",\"https://cdn.steemitimages.com/DQmPR3QTjhdWK1SVn1zoFTKEoneh4QRGBxvztThFXWXNWJz/image.png\",\"https://cdn.steemitimages.com/DQmPFWN5HrMPxN92tQnBNeGAZjr3xpe4L8EviFpL67LhnaY/image.png\"],\"links\":[\"https://kovan.etherscan.io/\",\"https://gitter.im/kovan-testnet/faucet\",\"https://remix.ethereum.org\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "1-contract-dapp",
"title": "가나슈가 아닌 이더리움 테스트넷 사용(1. 배포된 Contract이용 Dapp만들기)"
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T06:51:51",
"trx_id": "eed40fc8010f39b0b7505ed78481d601bddda54f",
"trx_in_block": 15,
"virtual_op": 0
}minhokimupdated their account properties2019/03/28 05:39:21
minhokimupdated their account properties
2019/03/28 05:39:21
| account | minhokim |
| json metadata | {"profile":{"location":"Seoul","profile_image":"https://cdn.steemitimages.com/DQmdJt1ro3gTnDxnCVBD2BzkD39o99eJuWAwT8CcFUBxn9f/%EC%82%AC%EC%A7%84.jpg"}} |
| memo key | STM77zg5sAJTNXoNp8Tr4YJjhSDF8GBiSdmZaDcdbg8YnZYKqDGu4 |
| Transaction Info | Block #31540727/Trx 3f241415ede622143f2ee8a9c36481ae2fccda7b |
View Raw JSON Data
{
"block": 31540727,
"op": [
"account_update",
{
"account": "minhokim",
"json_metadata": "{\"profile\":{\"location\":\"Seoul\",\"profile_image\":\"https://cdn.steemitimages.com/DQmdJt1ro3gTnDxnCVBD2BzkD39o99eJuWAwT8CcFUBxn9f/%EC%82%AC%EC%A7%84.jpg\"}}",
"memo_key": "STM77zg5sAJTNXoNp8Tr4YJjhSDF8GBiSdmZaDcdbg8YnZYKqDGu4"
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T05:39:21",
"trx_id": "3f241415ede622143f2ee8a9c36481ae2fccda7b",
"trx_in_block": 23,
"virtual_op": 0
}2019/03/28 05:36:24
2019/03/28 05:36:24
| author | minhokim |
| body | 안녕하세요! 두달이 넘어서야 새로운 포스팅을 하네요.. 하고있는 프로젝트 마무리하고, 해외에 한달넘게 체류하고 있어서 그동안 포스팅을 못했습니다.. 앞으로는 열심히 열심히 블록체인에 대한 포스팅을 다시! 진행 하려고 합니다. 어제 IT관련 뉴스를 보던중에 정말 좋은 소식을 하나 가져왔어요 !! 이더리움이 더 많은 개발자를 생태계 안으로 끌어들이기 위해 SmartContract 작성을 솔리디티가 아닌 다른 다양한 언어로도 사용할수 있도록 하기위해 업데이트를 준비하고 있다고합니다. 그러면 저희는 더이상 솔리디티를 사용할 필요가 없어져요 ㅎㅎ 솔리디티 언어를 새로 익히기 귀찮(?)았던 실력좋은 개발자분들에게 정말 좋은 소식이라 생각됩니다! 그리고 이더리움 관련 한가지 더 좋은 소식을 가져왔습니다. 2.0 업데이트를 통해 트랜잭션의 속도를 1천배 이상 증가될거라고 예상을 하고있다네요 개인적인 생각으로는 앞으로 이더리움의 발전이 정말 블록체인 생태계에 큰 영향을 미칠거라고 생각합니다! 원문기사 링크 첨부하니 한번씩 읽어보시면 좋을거같아요 http://www.zdnet.co.kr/view/?no=20190326165406 |
| json metadata | {"tags":["blockchain","ethereum","solidity"],"links":["http://www.zdnet.co.kr/view/?no=20190326165406"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 2vd9qu |
| title | 이더리움의 발전! |
| Transaction Info | Block #31540668/Trx f3557f012306b4686e3ab6a5263939adadc60a48 |
View Raw JSON Data
{
"block": 31540668,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요! 두달이 넘어서야 새로운 포스팅을 하네요..\n\n하고있는 프로젝트 마무리하고, 해외에 한달넘게 체류하고 있어서 그동안 포스팅을 못했습니다..\n\n앞으로는 열심히 열심히 블록체인에 대한 포스팅을 다시! 진행 하려고 합니다.\n\n어제 IT관련 뉴스를 보던중에 정말 좋은 소식을 하나 가져왔어요 !!\n\n이더리움이 더 많은 개발자를 생태계 안으로 끌어들이기 위해 SmartContract 작성을 솔리디티가 아닌 다른 다양한 언어로도 사용할수 있도록 하기위해 업데이트를 준비하고 있다고합니다.\n\n그러면 저희는 더이상 솔리디티를 사용할 필요가 없어져요 ㅎㅎ 솔리디티 언어를 새로 익히기 귀찮(?)았던 실력좋은 개발자분들에게 정말 좋은 소식이라 생각됩니다!\n\n그리고 이더리움 관련 한가지 더 좋은 소식을 가져왔습니다.\n\n2.0 업데이트를 통해 트랜잭션의 속도를 1천배 이상 증가될거라고 예상을 하고있다네요 \n\n개인적인 생각으로는 앞으로 이더리움의 발전이 정말 블록체인 생태계에 큰 영향을 미칠거라고 생각합니다!\n\n원문기사 링크 첨부하니 한번씩 읽어보시면 좋을거같아요 \n\nhttp://www.zdnet.co.kr/view/?no=20190326165406",
"json_metadata": "{\"tags\":[\"blockchain\",\"ethereum\",\"solidity\"],\"links\":[\"http://www.zdnet.co.kr/view/?no=20190326165406\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "2vd9qu",
"title": "이더리움의 발전!"
}
],
"op_in_trx": 0,
"timestamp": "2019-03-28T05:36:24",
"trx_id": "f3557f012306b4686e3ab6a5263939adadc60a48",
"trx_in_block": 22,
"virtual_op": 0
}2019/01/31 17:16:45
2019/01/31 17:16:45
| delegatee | minhokim |
| delegator | steem |
| vesting shares | 30098.744928 VESTS |
| Transaction Info | Block #29943052/Trx 3a6bad13732cec62e854449b725f53d4a282622e |
View Raw JSON Data
{
"block": 29943052,
"op": [
"delegate_vesting_shares",
{
"delegatee": "minhokim",
"delegator": "steem",
"vesting_shares": "30098.744928 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-31T17:16:45",
"trx_id": "3a6bad13732cec62e854449b725f53d4a282622e",
"trx_in_block": 1,
"virtual_op": 0
}2019/01/21 14:06:57
2019/01/21 14:06:57
| author | minhokim |
| body | 찾아주셔서 감사합니다! |
| json metadata | {"tags":["blockchain"],"app":"steemit/0.1"} |
| parent author | xbiidx |
| parent permlink | re-minhokim-react-dapp-3-dapp-20181210t031458147z |
| permlink | re-xbiidx-re-minhokim-react-dapp-3-dapp-20190121t140659314z |
| title | |
| Transaction Info | Block #29651567/Trx 782f666e97f372e1f0bd70adee5d1040233b2f95 |
View Raw JSON Data
{
"block": 29651567,
"op": [
"comment",
{
"author": "minhokim",
"body": "찾아주셔서 감사합니다!",
"json_metadata": "{\"tags\":[\"blockchain\"],\"app\":\"steemit/0.1\"}",
"parent_author": "xbiidx",
"parent_permlink": "re-minhokim-react-dapp-3-dapp-20181210t031458147z",
"permlink": "re-xbiidx-re-minhokim-react-dapp-3-dapp-20190121t140659314z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-01-21T14:06:57",
"trx_id": "782f666e97f372e1f0bd70adee5d1040233b2f95",
"trx_in_block": 17,
"virtual_op": 0
}2019/01/18 12:30:21
2019/01/18 12:30:21
| author | partiko |
| body | Thank you so much for sharing this amazing post with us! Have you heard about Partiko? It’s a really convenient mobile app for Steem! With Partiko, you can easily see what’s going on in the Steem community, make posts and comments (no beneficiary cut forever!), and always stayed connected with your followers via push notification! Partiko also rewards you with Partiko Points (3000 Partiko Point bonus when you first use it!), and Partiko Points can be converted into Steem tokens. You can earn Partiko Points easily by making posts and comments using Partiko. We also noticed that your Steem Power is low. We will be very happy to delegate 15 Steem Power to you once you have made a post using Partiko! With more Steem Power, you can make more posts and comments, and earn more rewards! If that all sounds interesting, you can: - Download Partiko Android at [Google Play](http://bit.ly/2SRFIta) - Or Download Partiko iOS on the [App Store](https://apple.co/2PcXkSd) Thank you so much for reading this message! |
| json metadata | {"app":"partiko"} |
| parent author | minhokim |
| parent permlink | 5-hyperledger-composer-4 |
| permlink | partiko-re-minhokim-5-hyperledger-composer-4-20190118t123021239z |
| title | |
| Transaction Info | Block #29563303/Trx 1a3f882c9afcac7056fcb8ea1a58a9294b2e990d |
View Raw JSON Data
{
"block": 29563303,
"op": [
"comment",
{
"author": "partiko",
"body": "Thank you so much for sharing this amazing post with us!\n\nHave you heard about Partiko? It’s a really convenient mobile app for Steem! With Partiko, you can easily see what’s going on in the Steem community, make posts and comments (no beneficiary cut forever!), and always stayed connected with your followers via push notification!\n\nPartiko also rewards you with Partiko Points (3000 Partiko Point bonus when you first use it!), and Partiko Points can be converted into Steem tokens. You can earn Partiko Points easily by making posts and comments using Partiko.\n\nWe also noticed that your Steem Power is low. We will be very happy to delegate 15 Steem Power to you once you have made a post using Partiko! With more Steem Power, you can make more posts and comments, and earn more rewards!\n\nIf that all sounds interesting, you can: \n\n- Download Partiko Android at [Google Play](http://bit.ly/2SRFIta)\n- Or Download Partiko iOS on the [App Store](https://apple.co/2PcXkSd)\n\nThank you so much for reading this message!",
"json_metadata": "{\"app\":\"partiko\"}",
"parent_author": "minhokim",
"parent_permlink": "5-hyperledger-composer-4",
"permlink": "partiko-re-minhokim-5-hyperledger-composer-4-20190118t123021239z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-01-18T12:30:21",
"trx_id": "1a3f882c9afcac7056fcb8ea1a58a9294b2e990d",
"trx_in_block": 14,
"virtual_op": 0
}2019/01/15 16:40:39
2019/01/15 16:40:39
| author | surpassinggoogle |
| body | Task Request. We Modified Our Task Request To Add Core Features & 'Communities' To Ulogs.org, Simplifying The 1.5 Task Drastically. + (500 Steem Is Completed In 7 days/550 Steem For 5 Days) The task has been drastically simplified and the first task is partially done. Ulogs is front-end only and a fork of busy. It uses React JS. This tasks have been delayed. It has been more than a month already. Please consider helping me or please pass it on, to anyone who can help me. The time allotment for both tasks is 7 days. https://steemit.com/utopian-io/@surpassinggoogle/task-request-we-modified-our-task-request-to-add-core-features-and-communities-to-ulogs-org-simplifying-the-1-5-task-drastically |
| json metadata | {"tags":["blockchain"],"links":["https://steemit.com/utopian-io/@surpassinggoogle/task-request-we-modified-our-task-request-to-add-core-features-and-communities-to-ulogs-org-simplifying-the-1-5-task-drastically"],"app":"steemit/0.1"} |
| parent author | minhokim |
| parent permlink | react-dapp-2-3 |
| permlink | re-minhokim-react-dapp-2-3-20190115t164036901z |
| title | |
| Transaction Info | Block #29482007/Trx 84bfaa42b20fff492d995ada6777a83b955f8148 |
View Raw JSON Data
{
"block": 29482007,
"op": [
"comment",
{
"author": "surpassinggoogle",
"body": "Task Request. We Modified Our Task Request To Add Core Features & 'Communities' To Ulogs.org, Simplifying The 1.5 Task Drastically. + (500 Steem Is Completed In 7 days/550 Steem For 5 Days)\n\n\nThe task has been drastically simplified and the first task is partially done. Ulogs is front-end only and a fork of busy. It uses React JS. This tasks have been delayed. It has been more than a month already. Please consider helping me or please pass it on, to anyone who can help me. The time allotment for both tasks is 7 days.\n\n\nhttps://steemit.com/utopian-io/@surpassinggoogle/task-request-we-modified-our-task-request-to-add-core-features-and-communities-to-ulogs-org-simplifying-the-1-5-task-drastically",
"json_metadata": "{\"tags\":[\"blockchain\"],\"links\":[\"https://steemit.com/utopian-io/@surpassinggoogle/task-request-we-modified-our-task-request-to-add-core-features-and-communities-to-ulogs-org-simplifying-the-1-5-task-drastically\"],\"app\":\"steemit/0.1\"}",
"parent_author": "minhokim",
"parent_permlink": "react-dapp-2-3",
"permlink": "re-minhokim-react-dapp-2-3-20190115t164036901z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-01-15T16:40:39",
"trx_id": "84bfaa42b20fff492d995ada6777a83b955f8148",
"trx_in_block": 26,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / 5-hyperledger-composer-42019/01/07 07:39:21
minhokimupvoted (100.00%) @minhokim / 5-hyperledger-composer-4
2019/01/07 07:39:21
| author | minhokim |
| permlink | 5-hyperledger-composer-4 |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29240942/Trx b1b336a4e8c06d6f26ae9c89dbdcb5fdfb1004fa |
View Raw JSON Data
{
"block": 29240942,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "5-hyperledger-composer-4",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-01-07T07:39:21",
"trx_id": "b1b336a4e8c06d6f26ae9c89dbdcb5fdfb1004fa",
"trx_in_block": 11,
"virtual_op": 0
}minhokimpublished a new post: 5-hyperledger-composer-42019/01/07 06:04:42
minhokimpublished a new post: 5-hyperledger-composer-4
2019/01/07 06:04:42
| author | minhokim |
| body | @@ -588,17 +588,16 @@ %EA%B8%B8 %EC%B6%94%EC%B2%9C%EB%93%9C%EB%A6%B4%EA%B2%8C%EC%9A%94 -! %0A%0A%0Afront @@ -691,17 +691,16 @@ %EC%B6%94%EA%B0%80%EB%90%98%EC%96%B4%EC%9E%88%EC%96%B4%EC%9A%94 -! %0Ahttps:/ |
| json metadata | {"tags":["blockcahin","hyperledger","chaincode","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png","https://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png","https://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png","https://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png","https://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 5-hyperledger-composer-4 |
| title | 하이퍼레져란 무엇인가!?(6. Hyperledger Composer 실습 4탄) |
| Transaction Info | Block #29239051/Trx bb90a7d5cfc66bcdd4fb0738f8a47c56e0b8164d |
View Raw JSON Data
{
"block": 29239051,
"op": [
"comment",
{
"author": "minhokim",
"body": "@@ -588,17 +588,16 @@\n %EA%B8%B8 %EC%B6%94%EC%B2%9C%EB%93%9C%EB%A6%B4%EA%B2%8C%EC%9A%94\n-!\n %0A%0A%0Afront\n@@ -691,17 +691,16 @@\n %EC%B6%94%EA%B0%80%EB%90%98%EC%96%B4%EC%9E%88%EC%96%B4%EC%9A%94\n-!\n %0Ahttps:/\n",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"chaincode\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png\",\"https://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png\",\"https://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png\",\"https://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png\",\"https://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "5-hyperledger-composer-4",
"title": "하이퍼레져란 무엇인가!?(6. Hyperledger Composer 실습 4탄)"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-07T06:04:42",
"trx_id": "bb90a7d5cfc66bcdd4fb0738f8a47c56e0b8164d",
"trx_in_block": 45,
"virtual_op": 0
}minhokimpublished a new post: 5-hyperledger-composer-42019/01/07 05:59:24
minhokimpublished a new post: 5-hyperledger-composer-4
2019/01/07 05:59:24
| author | minhokim |
| body | 안녕하세요 저번 포스팅에서는 Rest서버를 실행하고, 간단한 front-end화면을 구축해 API를 이용해서 데이터를 가져오는걸 했었어요 데이터를 입력하는부분은 직접 해보길 권장드렸는데 해보신분이 계신지요.... 당연히 해보셨을거라 저는 믿습니다! https://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png 저는 간단하게 Vehicle를 등록하고, 조회하는정도만 만들어봤어요 ㅎㅎ https://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png 저희가 저번 포스팅에서 carauction네트워크를 테스트 할때는 할당되는 변수가 vin밖에 없었죠. 제가 간단히 만든 웹에서는 vin,manufacturer,model,year가 있고 이미지까지 추가를 했는데 저는 image부분은 ipfs서버를 사용해 올리고, 해시값을 hyperledger 네트워크 블록에 저장하였습니다! ipfs에 대해선 간단히 다룬 포스팅이 있으니 모르시는 분들은 읽어보시길 추천드릴게요! front-end화면은 직접 해보시길 추천드리기때문에 따로 코드를 공유하지는 않을게요!ㅎ Rest서버를 실행하고, Vehicle를 조회해봤을때 저는 이렇게 변수가 추가되어있어요! https://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png 이러한것들을 쉽게 다룰수있게 바로 hyperledger composer를 사용하는 거예요 ㅎㅎ 자 그럼 127.0.01:8080 하이퍼렛져 플레이그라운드에 접속후, 저희가 저번시간에 생성했던 carauction 카드에 Connect를 해주세요 https://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png 바로 이부분입니다! 다들 기억하시죠 그리고 Define탭에서 수정을 하시면 굉장히 쉽게 비지니스모델을 수정할수가 있어요 https://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png 수정을하고 좌측 아래 Deploy changes를 클릭후, Rest 서버를 재시작 하시면 수정된 파일이 배포가되고, 이제부터 그 로직을 사용할수가 있게 된답니다. 어려운게 아니니 코드가 어떤식으로 짜여져있는지만 잘 분석하시면, 금방 자신이 원하는 자신만의 비지니스 모델을 만들수있을거라 생각되요! Hyperledger에서 가장 중요한부분이 저는 ACL을 정의하는 부분이라고 생각해요. 저번에도 말씀드렸듯이 Hyperledger는 퍼블릭 블록체인이 아닌, 프라이빗or컨소시움 블록체인이기 때문에 접근 권한이 있는 사람들만이 접근할수가 있어어하죠 그렇기때문에 wallet를 만들어 각자 발급받은 카드를 등록하고, 그 카드에 부여된 권한만큼만 나의 영향력을 행사할수가 있게되는거죠 그부분에 대해서는 저도 현재 연구하고 테스트하는 중이기때문에 연구가 다 끝나면 모든분들께 공유하기위한 포스팅을 작성하도록 하겠습니다. 오늘은 별내용이 없었지만, Hyperledger의 chaincode 개발에대해 맛을 보셨다고 생각합니다 다음 hyperledger 포스팅에선 위에서 언급했던 권한에 대해서 이야기 해보도록 할게요 오늘도 부족하지만 읽어주셔서 감사합니다 |
| json metadata | {"tags":["blockcahin","hyperledger","chaincode","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png","https://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png","https://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png","https://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png","https://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 5-hyperledger-composer-4 |
| title | 하이퍼레져란 무엇인가!?(6. Hyperledger Composer 실습 4탄) |
| Transaction Info | Block #29238945/Trx f0e9a56252abeeb30d8bf1f6db11d27cadd98276 |
View Raw JSON Data
{
"block": 29238945,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요\n\n저번 포스팅에서는 Rest서버를 실행하고, 간단한 front-end화면을 구축해 API를 이용해서 데이터를 가져오는걸 했었어요 데이터를 입력하는부분은 직접 해보길 권장드렸는데 해보신분이 계신지요....\n\n당연히 해보셨을거라 저는 믿습니다!\n\nhttps://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png\n\n저는 간단하게 Vehicle를 등록하고, 조회하는정도만 만들어봤어요 ㅎㅎ\n\nhttps://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png\n\n\n저희가 저번 포스팅에서 carauction네트워크를 테스트 할때는 할당되는 변수가 vin밖에 없었죠.\n\n제가 간단히 만든 웹에서는 vin,manufacturer,model,year가 있고 이미지까지 추가를 했는데\n\n저는 image부분은 ipfs서버를 사용해 올리고, 해시값을 hyperledger 네트워크 블록에 저장하였습니다!\n\nipfs에 대해선 간단히 다룬 포스팅이 있으니 모르시는 분들은 읽어보시길 추천드릴게요!\n\n\nfront-end화면은 직접 해보시길 추천드리기때문에 따로 코드를 공유하지는 않을게요!ㅎ\n\n\nRest서버를 실행하고, Vehicle를 조회해봤을때 저는 이렇게 변수가 추가되어있어요!\nhttps://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png\n\n\n이러한것들을 쉽게 다룰수있게 바로 hyperledger composer를 사용하는 거예요 ㅎㅎ\n\n자 그럼 127.0.01:8080 하이퍼렛져 플레이그라운드에 접속후, 저희가 저번시간에 생성했던 carauction 카드에 \n\nConnect를 해주세요\n\nhttps://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png\n\n바로 이부분입니다! 다들 기억하시죠\n\n그리고 Define탭에서 수정을 하시면 굉장히 쉽게 비지니스모델을 수정할수가 있어요\n\nhttps://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png\n\n수정을하고 좌측 아래 Deploy changes를 클릭후, Rest 서버를 재시작 하시면 수정된 파일이 배포가되고,\n이제부터 그 로직을 사용할수가 있게 된답니다.\n\n어려운게 아니니 코드가 어떤식으로 짜여져있는지만 잘 분석하시면, 금방 자신이 원하는 자신만의 비지니스 모델을\n만들수있을거라 생각되요!\n\nHyperledger에서 가장 중요한부분이 저는 ACL을 정의하는 부분이라고 생각해요.\n\n저번에도 말씀드렸듯이 Hyperledger는 퍼블릭 블록체인이 아닌, 프라이빗or컨소시움 블록체인이기 때문에\n접근 권한이 있는 사람들만이 접근할수가 있어어하죠\n\n그렇기때문에 wallet를 만들어 각자 발급받은 카드를 등록하고, 그 카드에 부여된 권한만큼만 나의 영향력을 행사할수가 있게되는거죠\n\n그부분에 대해서는 저도 현재 연구하고 테스트하는 중이기때문에 연구가 다 끝나면 모든분들께 공유하기위한\n포스팅을 작성하도록 하겠습니다.\n\n오늘은 별내용이 없었지만, Hyperledger의 chaincode 개발에대해 맛을 보셨다고 생각합니다\n\n다음 hyperledger 포스팅에선 위에서 언급했던 권한에 대해서 이야기 해보도록 할게요\n\n오늘도 부족하지만 읽어주셔서 감사합니다",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"chaincode\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png\",\"https://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png\",\"https://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png\",\"https://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png\",\"https://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "5-hyperledger-composer-4",
"title": "하이퍼레져란 무엇인가!?(6. Hyperledger Composer 실습 4탄)"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-07T05:59:24",
"trx_id": "f0e9a56252abeeb30d8bf1f6db11d27cadd98276",
"trx_in_block": 10,
"virtual_op": 0
}minhokimpublished a new post: 5-hyperledger-composer-42019/01/07 05:59:03
minhokimpublished a new post: 5-hyperledger-composer-4
2019/01/07 05:59:03
| author | minhokim |
| body | 안녕하세요 저번 포스팅에서는 Rest서버를 실행하고, 간단한 front-end화면을 구축해 API를 이용해서 데이터를 가져오는걸 했었어요 데이터를 입력하는부분은 직접 해보길 권장드렸는데 해보신분이 계신지요.... 당연히 해보셨을거라 저는 믿습니다! https://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png 저는 간단하게 Vehicle를 등록하고, 조회하는정도만 만들어봤어요 ㅎㅎ https://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png 저희가 저번 포스팅에서 carauction네트워크를 테스트 할때는 할당되는 변수가 vin밖에 없었죠. 제가 간단히 만든 웹에서는 vin,manufacturer,model,year가 있고 이미지까지 추가를 했는데 저는 image부분은 ipfs서버를 사용해 올리고, 해시값을 hyperledger 네트워크 블록에 저장하였습니다! ipfs에 대해선 간단히 다룬 포스팅이 있으니 모르시는 분들은 읽어보시길 추천드릴게요! front-end화면은 직접 해보시길 추천드리기때문에 따로 코드를 공유하지는 않을게요!ㅎ Rest서버를 실행하고, Vehicle를 조회해봤을때 저는 이렇게 변수가 추가되어있어요! https://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png 이러한것들을 쉽게 다룰수있게 바로 hyperledger composer를 사용하는 거예요 ㅎㅎ 자 그럼 127.0.01:8080 하이퍼렛져 플레이그라운드에 접속후, 저희가 저번시간에 생성했던 carauction 카드에 Connect를 해주세요 https://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png 바로 이부분입니다! 다들 기억하시죠 그리고 Define탭에서 수정을 하시면 굉장히 쉽게 비지니스모델을 수정할수가 있어요 https://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png 수정을하고 좌측 아래 Deploy changes를 클릭후, Rest 서버를 재시작 하시면 수정된 파일이 배포가되고, 이제부터 그 로직을 사용할수가 있게 된답니다. 어려운게 아니니 코드가 어떤식으로 짜여져있는지만 잘 분석하시면, 금방 자신이 원하는 자신만의 비지니스 모델을 만들수있을거라 생각되요! Hyperledger에서 가장 중요한부분이 저는 ACL을 정의하는 부분이라고 생각해요. 저번에도 말씀드렸듯이 Hyperledger는 퍼블릭 블록체인이 아닌, 프라이빗or컨소시움 블록체인이기 때문에 접근 권한이 있는 사람들만이 접근할수가 있어어하죠 그렇기때문에 wallet를 만들어 각자 발급받은 카드를 등록하고, 그 카드에 부여된 권한만큼만 나의 영향력을 행사할수가 있게되는거죠 그부분에 대해서는 저도 현재 연구하고 테스트하는 중이기때문에 연구가 다 끝나면 모든분들께 공유하기위한 포스팅을 작성하도록 하겠습니다. 오늘은 별내용이 없었지만, Hyperledger의 chaincode 개발에대해 맛을 보셨다고 생각합니다 다음 hyperledger 포스팅에선 위에서 언급했던 권한에 대해서 이야기 해보도록 할게요 오늘도 부족하지만 읽어주셔서 감사합니다 |
| json metadata | {"tags":["blockcahin","hyperledger","chaincode","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png","https://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png","https://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png","https://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png","https://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 5-hyperledger-composer-4 |
| title | 하이퍼레져란 무엇인가!?(5. Hyperledger Composer 실습 4탄) |
| Transaction Info | Block #29238938/Trx c2ebe6773a800d4ea033f865c7c645bf2ae4264d |
View Raw JSON Data
{
"block": 29238938,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요\n\n저번 포스팅에서는 Rest서버를 실행하고, 간단한 front-end화면을 구축해 API를 이용해서 데이터를 가져오는걸 했었어요 데이터를 입력하는부분은 직접 해보길 권장드렸는데 해보신분이 계신지요....\n\n당연히 해보셨을거라 저는 믿습니다!\n\nhttps://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png\n\n저는 간단하게 Vehicle를 등록하고, 조회하는정도만 만들어봤어요 ㅎㅎ\n\nhttps://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png\n\n\n저희가 저번 포스팅에서 carauction네트워크를 테스트 할때는 할당되는 변수가 vin밖에 없었죠.\n\n제가 간단히 만든 웹에서는 vin,manufacturer,model,year가 있고 이미지까지 추가를 했는데\n\n저는 image부분은 ipfs서버를 사용해 올리고, 해시값을 hyperledger 네트워크 블록에 저장하였습니다!\n\nipfs에 대해선 간단히 다룬 포스팅이 있으니 모르시는 분들은 읽어보시길 추천드릴게요!\n\n\nfront-end화면은 직접 해보시길 추천드리기때문에 따로 코드를 공유하지는 않을게요!ㅎ\n\n\nRest서버를 실행하고, Vehicle를 조회해봤을때 저는 이렇게 변수가 추가되어있어요!\nhttps://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png\n\n\n이러한것들을 쉽게 다룰수있게 바로 hyperledger composer를 사용하는 거예요 ㅎㅎ\n\n자 그럼 127.0.01:8080 하이퍼렛져 플레이그라운드에 접속후, 저희가 저번시간에 생성했던 carauction 카드에 \n\nConnect를 해주세요\n\nhttps://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png\n\n바로 이부분입니다! 다들 기억하시죠\n\n그리고 Define탭에서 수정을 하시면 굉장히 쉽게 비지니스모델을 수정할수가 있어요\n\nhttps://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png\n\n수정을하고 좌측 아래 Deploy changes를 클릭후, Rest 서버를 재시작 하시면 수정된 파일이 배포가되고,\n이제부터 그 로직을 사용할수가 있게 된답니다.\n\n어려운게 아니니 코드가 어떤식으로 짜여져있는지만 잘 분석하시면, 금방 자신이 원하는 자신만의 비지니스 모델을\n만들수있을거라 생각되요!\n\nHyperledger에서 가장 중요한부분이 저는 ACL을 정의하는 부분이라고 생각해요.\n\n저번에도 말씀드렸듯이 Hyperledger는 퍼블릭 블록체인이 아닌, 프라이빗or컨소시움 블록체인이기 때문에\n접근 권한이 있는 사람들만이 접근할수가 있어어하죠\n\n그렇기때문에 wallet를 만들어 각자 발급받은 카드를 등록하고, 그 카드에 부여된 권한만큼만 나의 영향력을 행사할수가 있게되는거죠\n\n그부분에 대해서는 저도 현재 연구하고 테스트하는 중이기때문에 연구가 다 끝나면 모든분들께 공유하기위한\n포스팅을 작성하도록 하겠습니다.\n\n오늘은 별내용이 없었지만, Hyperledger의 chaincode 개발에대해 맛을 보셨다고 생각합니다\n\n다음 hyperledger 포스팅에선 위에서 언급했던 권한에 대해서 이야기 해보도록 할게요\n\n오늘도 부족하지만 읽어주셔서 감사합니다",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"chaincode\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmRu4Z6Gx9BP2a1HfjHFQcdRoTFQF9TxwtzApWtsyEGsX6/image.png\",\"https://cdn.steemitimages.com/DQmeuGiBsatpjWb7Cdu2mh9zEK8EoqqnC6V8qFnFphd7w4P/image.png\",\"https://cdn.steemitimages.com/DQmRT3v5b7YxyLnTWoQrfEbzA59QfxFCgJPJcsXLpQR4x68/image.png\",\"https://cdn.steemitimages.com/DQmZrMp9J96L9cvPazE6u6Wgns9Nxt5F1J61k52wDj9AdHE/image.png\",\"https://cdn.steemitimages.com/DQmTkDvM1f2KUWGW8wfStmtoZHbhDWMUerN7gXReYkDqAbk/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "5-hyperledger-composer-4",
"title": "하이퍼레져란 무엇인가!?(5. Hyperledger Composer 실습 4탄)"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-07T05:59:03",
"trx_id": "c2ebe6773a800d4ea033f865c7c645bf2ae4264d",
"trx_in_block": 10,
"virtual_op": 0
}fyrstikkenupvoted (1.00%) @minhokim / 5-hyperledger-composer-32019/01/06 09:40:24
fyrstikkenupvoted (1.00%) @minhokim / 5-hyperledger-composer-3
2019/01/06 09:40:24
| author | minhokim |
| permlink | 5-hyperledger-composer-3 |
| voter | fyrstikken |
| weight | 100 (1.00%) |
| Transaction Info | Block #29214583/Trx f8c45ee128aa0a4e91308b106fb2d6412c589800 |
View Raw JSON Data
{
"block": 29214583,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "5-hyperledger-composer-3",
"voter": "fyrstikken",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2019-01-06T09:40:24",
"trx_id": "f8c45ee128aa0a4e91308b106fb2d6412c589800",
"trx_in_block": 71,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / react-dapp-4-dapp2019/01/06 09:23:03
minhokimupvoted (100.00%) @minhokim / react-dapp-4-dapp
2019/01/06 09:23:03
| author | minhokim |
| permlink | react-dapp-4-dapp |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29214239/Trx 588b7e6f4be940337598ace0dea2021c5dd8f1f3 |
View Raw JSON Data
{
"block": 29214239,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-4-dapp",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-01-06T09:23:03",
"trx_id": "588b7e6f4be940337598ace0dea2021c5dd8f1f3",
"trx_in_block": 1,
"virtual_op": 0
}2019/01/06 09:22:54
2019/01/06 09:22:54
| author | minhokim |
| permlink | 1 |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29214236/Trx fe3e62ddaa6164590e59de1bec05fa3e79dbd4b8 |
View Raw JSON Data
{
"block": 29214236,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "1",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-01-06T09:22:54",
"trx_id": "fe3e62ddaa6164590e59de1bec05fa3e79dbd4b8",
"trx_in_block": 28,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / 2-hyperledger-fabric2019/01/06 09:22:51
minhokimupvoted (100.00%) @minhokim / 2-hyperledger-fabric
2019/01/06 09:22:51
| author | minhokim |
| permlink | 2-hyperledger-fabric |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29214235/Trx 53eee87d3b05b863fc02cf58b79ff3d4791da88f |
View Raw JSON Data
{
"block": 29214235,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "2-hyperledger-fabric",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-01-06T09:22:51",
"trx_id": "53eee87d3b05b863fc02cf58b79ff3d4791da88f",
"trx_in_block": 4,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / 2-hyperledger-composer2019/01/06 09:22:45
minhokimupvoted (100.00%) @minhokim / 2-hyperledger-composer
2019/01/06 09:22:45
| author | minhokim |
| permlink | 2-hyperledger-composer |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29214233/Trx cfe9bcd923a812471ad52c2ce1b16500ee722149 |
View Raw JSON Data
{
"block": 29214233,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "2-hyperledger-composer",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-01-06T09:22:45",
"trx_id": "cfe9bcd923a812471ad52c2ce1b16500ee722149",
"trx_in_block": 2,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / 5-hyperledger-composer-32019/01/06 09:22:36
minhokimupvoted (100.00%) @minhokim / 5-hyperledger-composer-3
2019/01/06 09:22:36
| author | minhokim |
| permlink | 5-hyperledger-composer-3 |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29214230/Trx 5e63b1072932110c59080926ef29ef7ca6f29d99 |
View Raw JSON Data
{
"block": 29214230,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "5-hyperledger-composer-3",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-01-06T09:22:36",
"trx_id": "5e63b1072932110c59080926ef29ef7ca6f29d99",
"trx_in_block": 7,
"virtual_op": 0
}minhokimpublished a new post: 5-hyperledger-composer-32019/01/06 09:22:06
minhokimpublished a new post: 5-hyperledger-composer-3
2019/01/06 09:22:06
| author | minhokim |
| body | 안녕하세요! 오늘도 역시 Hyperledger 실습을 진행할거예요! 이더리움과 다르게 Hyperledger는 예제나 소스가 많이 공개되어 있지가 않아서 공부하기위한 자료를 찾는데 쉽지가 않죠 잘하는 사람들은 알아서 척척 다 하겠지만 ㅠㅠ 저희같은 초보들은 그저... 영어로된 원서를 보거나 외국인들이 포스팅한 글을 읽으며 공부할수밖에 없는데 이 마저도 자료가 많이 있지가 않아요... 그래서 결국 어느정도 숙지하고, 혼자서 이것저것 탐구해나가는 방식으로 공부를 할수밖에 없죠! 블록체인을 공부하시는 모든분들 힘내셨으면 좋겠어요! <hr/> 오늘은 저번시간에 이어서 진행 할거예요 오늘은 Rest 서버를 실행하고, 그 안에서 트랜잭션을 일으켜보는 테스트를 진행 하겠습니다! 장차 저희가 Front-end 화면을 구축하였을때, 이 Rest서버와 통신을해서 블록에 데이터를 입력하고, 가져오는 역할을 담당하기 때문에 이부분이 중요하다고 생각합니다. 사실 어려운건 없어요 ㅎㅎ 오늘 하는 내용을 토대로 다음시간에 Client화면을 만들고 데이터를 주고 받을 예정입니다! 자 그럼 모두들 버츄얼 머신을 실행해주시고, 우분투를 실행해주세요! 저번 시간까지 설치했던 모든 내용이 아직 유지되고 있지 않으면 처음부터 다시하셔야해요..ㅎㅎ 자 그럼 시작할게요! https://cdn.steemitimages.com/DQmbHHotGRU1yoQ5zB9R2YS7Z7MkTXopeEC9aVnpPGH2tkT/image.png 먼저 127.0.0.1:8080 번에 접속을해주세요! 저희가 지난시간에 carauction 예제를 이용하여 카드를 하나 생성하였었죠! 그 이름을 기억해주세요 ㅎ 저같은 경우는 admin@carauction-network1 이네요 그후에 리눅스 터미널창으로 가주세요! 저희가 playground는 실행중이니까 새로운 터미널창을 열어주세요 ㅎ https://cdn.steemitimages.com/DQmVqY2s1UAN3MrVxj5GTke1bgerjMQCT54wFAev4CwQsQN/image.png <b>- composer-rest-server -c admin@carauction-network1 -n never -w true</b> 명령어를 실행해주시면 rest-server가 열리게됩니다 저번시간에 포트포워딩할때 3000번 포트도 포트포워딩 시킨거 기억하시죠?? 바로 rest-server를 사용하기위해 3000번포트도 그때 같이 포트포워딩 시킨거였어요 ㅎ rest서버를 실행시키는데는 몇가지 방법이 있는데, 저는 미리 옵션을 지정해서 실행을 한 경우입니다. 그럼 127.0.0.1:3000 주소를 인터넷창에 입력후 접속해주세요 https://cdn.steemitimages.com/DQmUoTyAhpkeWBWm72vCSgzJX1QScJAEoEv5Nbd8tt7NqxR/image.png 이런화면이 나온다면 성공이예요 ㅎ 자 그럼 여기서도 Member와 Vehicle를 만들어 테스트를 해보겠습니다. 먼저 Member를 클릭해주세요 https://cdn.steemitimages.com/DQmNT5TTJLdbXrUkSNvdqnk5t5HTqz1xJpw6LRVojtCq1Ve/image.png GET,POST 등등 아래 여러 탭들이 나오죠? GET을 클릭하고 Try it out 버튼을 클릭해주세요 https://cdn.steemitimages.com/DQmNp6gHm8egfRXoAzXHD9FLz3h7RfTTLtTrGqkUk4Svmdc/image.png 그럼 아래 BODY부분에 전 포스팅에서 생성했던 멤버들이 나올거예요! https://cdn.steemitimages.com/DQmVJXGZiyPQ2hFdttk5YZyj8mKF7CvcwzCntuFYx57rqte/image.png 다른 Vehicle이나 listing정보들도 블록에 저장이 되어있다는 거죠 ㅎㅎ 여기서도 이것저것 테스트를 한번 해보시기 바랄게요! 자 테스트를 맘껏 진행하셨으면 API연동관련 부분으로 넘어가도록 할게요! https://cdn.steemitimages.com/DQmcaXY46xv1i8tJpsA21uwDf1DLQtqn64WCTCh4Uf4yWgH/image.png 빨간색으로 포인트준 Request URL부분이 바로 저희가 사용할 API 주소예요 프로그래밍을 많이 해보신분들은 이제 감이 오시겠죠 어떤식으로 호출하고, 데이터의 저장이 이루어지는지! JSP에서 fetch를 이용해서 데이터를 저장하고, 불러오도록 간단한 Front-end화면을 만들어 보겠습니다 저는 자바스크립트 react라이브러리를 주로 사용하기때문에 이번에도 react를 이용해서 만들어보도록 하겠습니다 react에 대해서 잘 모르시는분들은.. 김민준님의 블로그에서 react를 한번 배워보시는걸 추천드려요! https://velopert.com/reactjs-tutorials react-native에 관심이 있어서 앱을 만들어보고 싶다 하시는분들은 codejong님의 블로그 https://class.codejong.kr/ 를 추천드립니다! 콘솔창을 하나 열어주시고 원하시는 폴더에 npm install -g create-react-app를 global로 설치해주세요! 그후에 create-react-app 프로젝트명 이렇게 빈 react프로젝트를 하나 생성해주시면 되겠습니다! https://cdn.steemitimages.com/DQmQeygPXjas2kaLV4wpy15x9zTiXSLbt22taACMPAzNwvT/image.png VSCODE로 프로젝트를 열어주시고 components폴더에 GetCar.js / PostCar.js 두개의 파일을 생성해주세요! GetCar.js부터 코딩을 진행하겠습니다 https://cdn.steemitimages.com/DQmWyshM6dX8vcfRLoqHcAccpDoMrCBcFU81yFZtLpNncr2/image.png fetchVehicle()함수를 만들어서 componentDidMount()내에서 호출을 하는 간단한 코드입니다. fetch(API주소),{형식을 정의} 이런식으로 저희의 Rest서버에 접근을 할수가 있어요! 그리고 componentDidMount()내에서 호출을 한후, state에서 만든 listCar에 불러온 내용을 저장을 하는 기능을 하고 있어요 https://cdn.steemitimages.com/DQmZcqckDGirZ2ePfXyMXTRLHrBxXQEEPJxDhnYY1UMJXmA/image.png 자 다음으로 map함수를 이용해 배열을 다듬어준후에 출력을 진행해주세요! https://cdn.steemitimages.com/DQmaG94ztDsKZPY6HJcLTCfmcCKME9LE7Fm4iE7CEe2ha1g/image.png 그럼 정상적으로 client화면에 찍히는게 보이실거예요! https://cdn.steemitimages.com/DQmdSaVGfN9Tt6cNW9Wm2isFcK279zEv1X77vNJYrFDHauM/image.png 내용이 일치하죠ㅎㅎ 정말 간단하게 진행해봤어요! 데이터를 입력하는 부분인 PostCar.js 부분은 한번 직접 작성해보시길 바랄게요! react를 잘모르시는분들은 위에서 말씀드렸던 김민준님,코드종님 블로그에서 react에 대해서 숙지하고 오시길 부탁드릴게요! 앞으로도 저는 클라이언트 화면단을 react로만 프로그래밍할 예정이기 때문이예요..... 다른 언어에서 API연동 관련해서 다룰줄 아신다면 각자의 언어로 프로그래밍하셔도 무방합니다!! 다음시간에는 카드권한에 관련해서 실습하고 설명드리겠습니다!! 부족하지만 끝까지 봐주셔서 감사합니다 ㅎ |
| json metadata | {"tags":["blockcahin","hyperledger","ethereum","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmbHHotGRU1yoQ5zB9R2YS7Z7MkTXopeEC9aVnpPGH2tkT/image.png","https://cdn.steemitimages.com/DQmVqY2s1UAN3MrVxj5GTke1bgerjMQCT54wFAev4CwQsQN/image.png","https://cdn.steemitimages.com/DQmUoTyAhpkeWBWm72vCSgzJX1QScJAEoEv5Nbd8tt7NqxR/image.png","https://cdn.steemitimages.com/DQmNT5TTJLdbXrUkSNvdqnk5t5HTqz1xJpw6LRVojtCq1Ve/image.png","https://cdn.steemitimages.com/DQmNp6gHm8egfRXoAzXHD9FLz3h7RfTTLtTrGqkUk4Svmdc/image.png","https://cdn.steemitimages.com/DQmVJXGZiyPQ2hFdttk5YZyj8mKF7CvcwzCntuFYx57rqte/image.png","https://cdn.steemitimages.com/DQmcaXY46xv1i8tJpsA21uwDf1DLQtqn64WCTCh4Uf4yWgH/image.png","https://cdn.steemitimages.com/DQmQeygPXjas2kaLV4wpy15x9zTiXSLbt22taACMPAzNwvT/image.png","https://cdn.steemitimages.com/DQmWyshM6dX8vcfRLoqHcAccpDoMrCBcFU81yFZtLpNncr2/image.png","https://cdn.steemitimages.com/DQmZcqckDGirZ2ePfXyMXTRLHrBxXQEEPJxDhnYY1UMJXmA/image.png","https://cdn.steemitimages.com/DQmaG94ztDsKZPY6HJcLTCfmcCKME9LE7Fm4iE7CEe2ha1g/image.png","https://cdn.steemitimages.com/DQmdSaVGfN9Tt6cNW9Wm2isFcK279zEv1X77vNJYrFDHauM/image.png"],"links":["https://velopert.com/reactjs-tutorials","https://class.codejong.kr/"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 5-hyperledger-composer-3 |
| title | 하이퍼레져란 무엇인가!?(5. Hyperledger Composer 실습 3탄) |
| Transaction Info | Block #29214220/Trx d87c86e5c65a76f02a12a85bd6cbd810c1364215 |
View Raw JSON Data
{
"block": 29214220,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!\n\n오늘도 역시 Hyperledger 실습을 진행할거예요!\n\n이더리움과 다르게 Hyperledger는 예제나 소스가 많이 공개되어 있지가 않아서 공부하기위한 자료를 찾는데 쉽지가 않죠 잘하는 사람들은 알아서 척척 다 하겠지만 ㅠㅠ 저희같은 초보들은 그저... 영어로된 원서를 보거나 외국인들이 포스팅한 글을 읽으며 공부할수밖에 없는데 이 마저도 자료가 많이 있지가 않아요...\n\n그래서 결국 어느정도 숙지하고, 혼자서 이것저것 탐구해나가는 방식으로 공부를 할수밖에 없죠!\n\n블록체인을 공부하시는 모든분들 힘내셨으면 좋겠어요!\n\n<hr/>\n\n오늘은 저번시간에 이어서 진행 할거예요\n\n오늘은 Rest 서버를 실행하고, 그 안에서 트랜잭션을 일으켜보는 테스트를 진행 하겠습니다!\n\n장차 저희가 Front-end 화면을 구축하였을때, 이 Rest서버와 통신을해서 블록에 데이터를 입력하고,\n가져오는 역할을 담당하기 때문에 이부분이 중요하다고 생각합니다.\n\n사실 어려운건 없어요 ㅎㅎ \n\n오늘 하는 내용을 토대로 다음시간에 Client화면을 만들고 데이터를 주고 받을 예정입니다!\n\n\n자 그럼 모두들 버츄얼 머신을 실행해주시고, 우분투를 실행해주세요!\n\n저번 시간까지 설치했던 모든 내용이 아직 유지되고 있지 않으면 처음부터 다시하셔야해요..ㅎㅎ\n\n자 그럼 시작할게요!\n\nhttps://cdn.steemitimages.com/DQmbHHotGRU1yoQ5zB9R2YS7Z7MkTXopeEC9aVnpPGH2tkT/image.png\n\n먼저 127.0.0.1:8080 번에 접속을해주세요!\n\n저희가 지난시간에 carauction 예제를 이용하여 카드를 하나 생성하였었죠!\n\n그 이름을 기억해주세요 ㅎ 저같은 경우는 admin@carauction-network1 이네요\n\n그후에 리눅스 터미널창으로 가주세요!\n\n저희가 playground는 실행중이니까 새로운 터미널창을 열어주세요 ㅎ\n\nhttps://cdn.steemitimages.com/DQmVqY2s1UAN3MrVxj5GTke1bgerjMQCT54wFAev4CwQsQN/image.png\n\n<b>- composer-rest-server -c admin@carauction-network1 -n never -w true</b>\n\n명령어를 실행해주시면 rest-server가 열리게됩니다\n\n저번시간에 포트포워딩할때 3000번 포트도 포트포워딩 시킨거 기억하시죠??\n\n바로 rest-server를 사용하기위해 3000번포트도 그때 같이 포트포워딩 시킨거였어요 ㅎ\n\nrest서버를 실행시키는데는 몇가지 방법이 있는데, 저는 미리 옵션을 지정해서 실행을 한 경우입니다.\n\n그럼 127.0.0.1:3000 주소를 인터넷창에 입력후 접속해주세요\n\n\nhttps://cdn.steemitimages.com/DQmUoTyAhpkeWBWm72vCSgzJX1QScJAEoEv5Nbd8tt7NqxR/image.png\n\n이런화면이 나온다면 성공이예요 ㅎ\n\n자 그럼 여기서도 Member와 Vehicle를 만들어 테스트를 해보겠습니다.\n\n\n먼저 Member를 클릭해주세요\n\nhttps://cdn.steemitimages.com/DQmNT5TTJLdbXrUkSNvdqnk5t5HTqz1xJpw6LRVojtCq1Ve/image.png\n\nGET,POST 등등 아래 여러 탭들이 나오죠?\n\nGET을 클릭하고 Try it out 버튼을 클릭해주세요\n\nhttps://cdn.steemitimages.com/DQmNp6gHm8egfRXoAzXHD9FLz3h7RfTTLtTrGqkUk4Svmdc/image.png\n\n\n그럼 아래 BODY부분에 전 포스팅에서 생성했던 멤버들이 나올거예요!\n\nhttps://cdn.steemitimages.com/DQmVJXGZiyPQ2hFdttk5YZyj8mKF7CvcwzCntuFYx57rqte/image.png\n\n다른 Vehicle이나 listing정보들도 블록에 저장이 되어있다는 거죠 ㅎㅎ\n\n여기서도 이것저것 테스트를 한번 해보시기 바랄게요!\n\n\n자 테스트를 맘껏 진행하셨으면 API연동관련 부분으로 넘어가도록 할게요!\n\nhttps://cdn.steemitimages.com/DQmcaXY46xv1i8tJpsA21uwDf1DLQtqn64WCTCh4Uf4yWgH/image.png\n\n빨간색으로 포인트준 Request URL부분이 바로 저희가 사용할 API 주소예요\n\n프로그래밍을 많이 해보신분들은 이제 감이 오시겠죠 어떤식으로 호출하고, 데이터의 저장이 이루어지는지!\n\nJSP에서 fetch를 이용해서 데이터를 저장하고, 불러오도록 간단한 Front-end화면을 만들어 보겠습니다\n\n\n저는 자바스크립트 react라이브러리를 주로 사용하기때문에 이번에도 react를 이용해서 만들어보도록 하겠습니다\n\nreact에 대해서 잘 모르시는분들은.. \n\n김민준님의 블로그에서 react를 한번 배워보시는걸 추천드려요!\nhttps://velopert.com/reactjs-tutorials\n\nreact-native에 관심이 있어서 앱을 만들어보고 싶다 하시는분들은\ncodejong님의 블로그 https://class.codejong.kr/ 를 추천드립니다!\n\n\n콘솔창을 하나 열어주시고 원하시는 폴더에\nnpm install -g create-react-app를 global로 설치해주세요!\n그후에 create-react-app 프로젝트명 \n이렇게 빈 react프로젝트를 하나 생성해주시면 되겠습니다!\n\nhttps://cdn.steemitimages.com/DQmQeygPXjas2kaLV4wpy15x9zTiXSLbt22taACMPAzNwvT/image.png\n\n\nVSCODE로 프로젝트를 열어주시고 components폴더에 GetCar.js / PostCar.js 두개의 파일을 생성해주세요!\n\nGetCar.js부터 코딩을 진행하겠습니다\n\nhttps://cdn.steemitimages.com/DQmWyshM6dX8vcfRLoqHcAccpDoMrCBcFU81yFZtLpNncr2/image.png\n\nfetchVehicle()함수를 만들어서 componentDidMount()내에서 호출을 하는 간단한 코드입니다.\n\nfetch(API주소),{형식을 정의} 이런식으로 저희의 Rest서버에 접근을 할수가 있어요!\n\n그리고 componentDidMount()내에서 호출을 한후, state에서 만든 listCar에 불러온 내용을 저장을 하는 기능을 하고 있어요\n\nhttps://cdn.steemitimages.com/DQmZcqckDGirZ2ePfXyMXTRLHrBxXQEEPJxDhnYY1UMJXmA/image.png\n\n자 다음으로 map함수를 이용해 배열을 다듬어준후에 출력을 진행해주세요!\n\nhttps://cdn.steemitimages.com/DQmaG94ztDsKZPY6HJcLTCfmcCKME9LE7Fm4iE7CEe2ha1g/image.png\n\n그럼 정상적으로 client화면에 찍히는게 보이실거예요!\n\nhttps://cdn.steemitimages.com/DQmdSaVGfN9Tt6cNW9Wm2isFcK279zEv1X77vNJYrFDHauM/image.png\n\n내용이 일치하죠ㅎㅎ \n\n정말 간단하게 진행해봤어요! 데이터를 입력하는 부분인 PostCar.js 부분은 한번 직접 작성해보시길 바랄게요!\n\nreact를 잘모르시는분들은 위에서 말씀드렸던 김민준님,코드종님 블로그에서 react에 대해서 숙지하고 오시길 \n부탁드릴게요!\n\n앞으로도 저는 클라이언트 화면단을 react로만 프로그래밍할 예정이기 때문이예요.....\n\n다른 언어에서 API연동 관련해서 다룰줄 아신다면 각자의 언어로 프로그래밍하셔도 무방합니다!!\n\n다음시간에는 카드권한에 관련해서 실습하고 설명드리겠습니다!!\n\n부족하지만 끝까지 봐주셔서 감사합니다 ㅎ",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"ethereum\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmbHHotGRU1yoQ5zB9R2YS7Z7MkTXopeEC9aVnpPGH2tkT/image.png\",\"https://cdn.steemitimages.com/DQmVqY2s1UAN3MrVxj5GTke1bgerjMQCT54wFAev4CwQsQN/image.png\",\"https://cdn.steemitimages.com/DQmUoTyAhpkeWBWm72vCSgzJX1QScJAEoEv5Nbd8tt7NqxR/image.png\",\"https://cdn.steemitimages.com/DQmNT5TTJLdbXrUkSNvdqnk5t5HTqz1xJpw6LRVojtCq1Ve/image.png\",\"https://cdn.steemitimages.com/DQmNp6gHm8egfRXoAzXHD9FLz3h7RfTTLtTrGqkUk4Svmdc/image.png\",\"https://cdn.steemitimages.com/DQmVJXGZiyPQ2hFdttk5YZyj8mKF7CvcwzCntuFYx57rqte/image.png\",\"https://cdn.steemitimages.com/DQmcaXY46xv1i8tJpsA21uwDf1DLQtqn64WCTCh4Uf4yWgH/image.png\",\"https://cdn.steemitimages.com/DQmQeygPXjas2kaLV4wpy15x9zTiXSLbt22taACMPAzNwvT/image.png\",\"https://cdn.steemitimages.com/DQmWyshM6dX8vcfRLoqHcAccpDoMrCBcFU81yFZtLpNncr2/image.png\",\"https://cdn.steemitimages.com/DQmZcqckDGirZ2ePfXyMXTRLHrBxXQEEPJxDhnYY1UMJXmA/image.png\",\"https://cdn.steemitimages.com/DQmaG94ztDsKZPY6HJcLTCfmcCKME9LE7Fm4iE7CEe2ha1g/image.png\",\"https://cdn.steemitimages.com/DQmdSaVGfN9Tt6cNW9Wm2isFcK279zEv1X77vNJYrFDHauM/image.png\"],\"links\":[\"https://velopert.com/reactjs-tutorials\",\"https://class.codejong.kr/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "5-hyperledger-composer-3",
"title": "하이퍼레져란 무엇인가!?(5. Hyperledger Composer 실습 3탄)"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-06T09:22:06",
"trx_id": "d87c86e5c65a76f02a12a85bd6cbd810c1364215",
"trx_in_block": 16,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / 4-hyperledger-composer-22019/01/05 17:36:09
minhokimupvoted (100.00%) @minhokim / 4-hyperledger-composer-2
2019/01/05 17:36:09
| author | minhokim |
| permlink | 4-hyperledger-composer-2 |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #29195323/Trx 1e248c44c8698731082382ab350378a39728dd73 |
View Raw JSON Data
{
"block": 29195323,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "4-hyperledger-composer-2",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-01-05T17:36:09",
"trx_id": "1e248c44c8698731082382ab350378a39728dd73",
"trx_in_block": 20,
"virtual_op": 0
}councilupvoted (10.00%) @minhokim / 4-hyperledger-composer-22019/01/05 13:11:24
councilupvoted (10.00%) @minhokim / 4-hyperledger-composer-2
2019/01/05 13:11:24
| author | minhokim |
| permlink | 4-hyperledger-composer-2 |
| voter | council |
| weight | 1000 (10.00%) |
| Transaction Info | Block #29190033/Trx 9e4c4be433959a073888c80517dcbe8054123ef0 |
View Raw JSON Data
{
"block": 29190033,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "4-hyperledger-composer-2",
"voter": "council",
"weight": 1000
}
],
"op_in_trx": 0,
"timestamp": "2019-01-05T13:11:24",
"trx_id": "9e4c4be433959a073888c80517dcbe8054123ef0",
"trx_in_block": 10,
"virtual_op": 0
}minhokimpublished a new post: 4-hyperledger-composer-22019/01/05 12:31:24
minhokimpublished a new post: 4-hyperledger-composer-2
2019/01/05 12:31:24
| author | minhokim |
| body | 안녕하세요! 저번 포스팅에 이어서 오늘은 직접 하이퍼레져를 우분투에 설치하고 다뤄보는 시간을 갖도록 할게요!! 다들 저번시간에 진행했던 버추얼박스내에 우분투를 실행해주세요! 먼저 hyperledger composer를 사용하는데 필수 툴들을 설치할거예요! 제가 따로 root권한으로 다운받으라고 말씀드리는거외에 절대로 sudo를 사용하시면 안됩니다! <b>- npm install -g [email protected]</b> <b>- npm install -g [email protected]</b> <b>- npm install -g [email protected]</b> <b>- npm install -g yo</b> 위에 명령어를 터미널에서 실행해주시면 설치가 완료된답니다 설치중하는데 시간이 상당히 소요됩니다 인내합시다! 저포함 많은 분들이 리눅스를 많이 다뤄보시지는 않았을거예요.. 그러니 저희는 스냅샷을 중간중간 찍어두도록 할게요! 여기까지 설치다 하셨던분들은 지난포스팅에서 말씀드렸던 버츄얼박스의 스냅샷을 한번씩 더 찍어주세요! 자 이제 playgroud를 설치하면 저희는 playgroud를 사용할수가 있어져요! <b>- npm install -g [email protected]</b> 위 명령어를 터미널창에 입력해주세요. 그리고나서 fabric을 다운 받도록 할게요! fabric에서 따로 fabric 실습을 안했던 이유중 하나가 composer실습을 진행하면서 다 포함되어 있는 내용이기 때문입니다. <b>- mkdir ~/fabric-dev-servers && cd ~/fabric-dev-servers</b> <b>- curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz</b> <b>- tar -xvf fabric-dev-servers.tar.gz</b> 위 명령어를 터미널창에 입력해주세요. fabric-dev-servers 폴더를 생성하고, 그 안에 hyperledger-fabric설치를 위한 파일을 다운받고 압축까지 한번에 풀어버리는 명령어입니다. https://cdn.steemitimages.com/DQmWo6fEu5KWVb5Xbvr2NMSm37rxdrXYLR62fyh43neC2mD/image.png 이제 fabric-dev-servers폴더안에 위의 그림과같은 파일들이 생성되었을거예요 그리고downloadFabric.sh 파일을 실행해주세요! <b>- ./downloadFabric.sh</b> 위에 명령어입니다 이부분에서도 시간이 많이 소요되죠..ㅠ 이제 설치과정은 거의다 끝나갑니다 !! 지금 하고계신 설치 마무리하고, 바로실행해서 문제없이 구동이 되는지 확인해보고, rest서버를 이용해서 실습을 진행할예정이예요! 자 설치가 다 완료되었으면 이제 실행및, 피어관리자카드를 만드는 단계를 진행할거예요 <b> - ./startFabric.sh </b> <b>- ./createPeerAdminCard.sh</b> 정상적으로 오류가 없이 진행이 되셨다면 터미널창에서 카드가 생성된게 보이실거예요! https://cdn.steemitimages.com/DQmST8CEDvWeGQRpCWAxUwan2eqRd31DVoQkf3BFa64oNGp/image.png 카드라는것은 비지니스 네트워크에 접근할수있는 권한을 부여하고, 필요한 정보를 담고있는 신분증같은 역할을 담당하고 있어요 Hyperledger Fabric 네트워크에 대해 안전하고, 편리하게 접근할수있도록 한답니다 이부분에서는 Admin에대한 카드만 생성하였고, 이제 직접 playground를 실행해서 카드를 생성해보고 샘플예제를 실행해보도록 할게요! <b> - composer-playground</b> 명령어로 playground를 실행해주세요! 127.0.0.1:8080로 접속되는걸 확인하실수가 있어요 ㅎㅎ 근데 리눅스에서 하자니 너무 불편한감이 있죠.. 저희는 포트포워딩 기능을 통해 윈도우에서 playground를 사용해 보도록 하죠! https://cdn.steemitimages.com/DQmXxLPnVFvid3SYvVSyDiZQgVhRYPJg6S7sHNdGJy7idSX/image.png 버추얼박스에서 실행중인 우분투이미지파일을 오른쪽클릭후 설정에 들어가주세요 그리고 네트워크->고급클릭!->포트포워딩 클릭해주세요 https://cdn.steemitimages.com/DQmc9GWdcFbhfBDS8XuCbTXLTKhfoWrCJjFEqqJFwo7mDfM/image.png https://cdn.steemitimages.com/DQmdKkQB1VUx6yP13gRJsgstd8FFcRPinBdPrbULHRY6HX4/image.png 3000번과 8080번 포트를 둘다 추가시켜주도록 할게요! 지금은 8080번 포트만 사용하지만 다음에 실습할 Rest서버에서 3000번포트로 사용할 예정이기 때문입니다 자 그럼 리눅스상에서 굳이 playground를 접속할 필요가 없어져요 ㅎㅎ 윈도우상에서 인터넷을 열어주시고 127.0.0.1:8080 로 들어가봅시다! https://cdn.steemitimages.com/DQmeoRMX5QYqDJoPSb12ZUwmyxBQGKzkpYDua5sRLTe28Ge/image.png 접속이 아주잘되네요!! 여기까지 오류없이 잘따라오셨으면 정말 칭찬해드리고싶어요.. 저는 처음할때 리눅스만 약 20번을 지웠다가 깔았었죠 ㅠ 초기화면에 카드가 하나보이실거예요 ! 저게 무엇인지 감이 오시나요?? 위에서 ./CreatePeerAdmin 명령어로 생성한 카드입니다. 그럼 바로옆에 카드를 하나더 생성해볼게요! https://cdn.steemitimages.com/DQmZZ6vDXBPduk8W5nyhuTMwQi2CAHXgySCM4AAzem5bFVB/image.png Deploy a new business cards를 클릭해주세요! https://cdn.steemitimages.com/DQmTUqak9UUPF8rJfo8nVBWq81hvXLfUF96zbFMS4yPDcQe/image.png 그리고 아래로 내려보시면 여러가지 Fabric 예제가 보이실거예요 저는 carauction-network를 사용해서 테스트를 해볼게요! 편하신거 아무거나 골라서 테스트를 해보셔도 무방합니다 ㅎㅎ https://cdn.steemitimages.com/DQmcH1pEMVWGJHPixdPnnE6kSoQChrrRfLVwEMVNZAgy3YV/image.png 이부분에서 인증방식을 id and secret로 체크해주시고 Enrollment ID : admin Enrollment Secret : adminpw 입력해주세요! 그리고 맨위에 admin card name 설정하는 부분이 비어있죠 편하실대로 써도되지만, 저는 편의를 위해 admin@carauction-network라고 적을게요! 제경험상 email형식을 제대로 맞추지 않으면 배포중에 오류가 생기더군요 https://cdn.steemitimages.com/DQmWv7fd8JtSvMeq4MoewzS8PhMtLWrpVz8pqCbmTjpKZMc/image.png 그리고 우측에 Deploy버튼을 눌러주시면 됩니다! 여기서도 시간이 꽤걸리죠.. 우분투로 돌아가서 playground 실행시킨 터미널을 보시면 막 뭔가를 하고있어요! https://cdn.steemitimages.com/DQmcqz5FudjM4QigctX3WE8eNFYrZi7kJNaXgzBmC2LzVeU/image.png 아마도 현재 생성중이다 뭐 이런내용인거 같네요 https://cdn.steemitimages.com/DQmY6ksAQapfpGGb4DgDa9A2gE3skZFcXmcu3fRPRJbuxw5/image.png 가운데 User ID에 Admin이라고 써있는거 보이시나요? 저희가 카드 생성중에 admin/adminpw를 사용해서 만들었기때문입니다 ㅎㅎ 음 아마도 admin권한이 아닌 임의의 user id를 만든후 그user id권한으로 card를 만든다면 그 user id가 적혀있겠죠? 이제 정상적으로 생성이되었습니다. 방금 생성된 카드에서 Connect now를 통해 들어가 보도록 하죠 https://cdn.steemitimages.com/DQmShRWtj6sTaCcM5QzGJ9nZvxoU9gqyo8otAnidUBG28no/image.png 이부분이 바로 비지니스 모델을 정의하는 곳이예요! 음 더 쉽게 말해서, 내가 원하는 규칙을 프로그래밍 시키고, hyperledger 블록과 연결이 되는 곳이죠 이부분은 수정하지않고, 진행할게요! 일단은 Hyperledger에서 제공해주는 예제를 사용해보도록 해요 https://cdn.steemitimages.com/DQmbjfpaMWbDBgmvSn4Ld4qfqrZ1uToeHWDjnJg6EJ6VfE6/image.png Test탭으로 들어간후, 테스트를 진행해봅시다! 옥션에 참여할 멤버부터 생성하도록 하죠 https://cdn.steemitimages.com/DQmVZBHRna6Uiv1AfxhHMYheXmqUQfHu9GVkgX2znXFoAhr/image.png 전 AAA,BBB,CCC라는 세개의 멤버를 생성했어요 https://cdn.steemitimages.com/DQmSYuVxn1WwzNUaP3joPyPEun2uHBArcxFhWoMwmyZxbth/image.png balance도 임의로주시고, 이름,이메일도 임의로 주세요 각 멤버의 고유 ID로 활용되는게 email이니 중복되지않게 정의해주세요! 그다음 차량을 한대 만들어보죠 https://cdn.steemitimages.com/DQmc4Dz9r2j12cxFBaKUWp9zkpkN2onzsT5pCSeWq3djLce/image.png Vehicle 탭에서 [email protected]의 소유로 차량을 한대 생성했어요. vin은 각차량마다 가지고있는 고유번호인데, 그냥 알기쉽게 간단하게 지정해줬습니다 그리고! 차량 리스팅을통해 경매에 등록해보도록 합시다 https://cdn.steemitimages.com/DQmcDCMhrT9RLWpM4hc3bePBVMpq81tLgK8iiVy6mase8Hr/image.png "listingId": "listing1", "reservePrice": 1000, "description": "", "state": "FOR_SALE", "vehicle": "resource:org.acme.vehicle.auction.Vehicle#car1" vehicle부분에서는 차량 생성할때 vin 적으셨던거 기억나시죠? 그값을 적어주시면 됩니다! 자이제 좌측 하단부분에 Submit Transaction버튼을 클릭해주세요 https://cdn.steemitimages.com/DQmcqPPjdEb65XchuNEBhVL9hkhbHhHG4coTT3UG6qGieQu/image.png https://cdn.steemitimages.com/DQmVKJUEpxKtiGABtYJUDiJuvHzQJ76pd6J6yJZBJ23pm3M/image.png 빨간 박스부분을 Offer로 바꿔주시고, 위에처럼 입력하고 submit버튼을 클릭해주세요 [email protected] 멤버가 3000원에 입찰을했으니 [email protected] 멤버로 5000원에 입찰을 한번더 하고, 경매를 끝내보도록하죠 Submit Transaction 버튼을 다시한번 눌러주세요 https://cdn.steemitimages.com/DQmUMUEBJX9bK4p8EBpHxR3UgjbnB6n6w1icfoY4Uairiaw/image.png 그러면 경매가 끝나게되고, 최고입찰자에게 차동차가 넘어가게됩니다 https://cdn.steemitimages.com/DQmWzCiyuxcQKsgHDHHMWWmgprgvXA7ByrMdgnS4w9Vwczf/image.png CCC의 balance가 5000원줄고 AAA의 balance가 5000원 늘은게 보이시죠? 처음에 10000원씩 주려했는데 0이 하나씩 더붙은채 줘버렸네요..ㅋㅋ 자 아무튼! 이제 자동차의 소유자를 보시죠 https://cdn.steemitimages.com/DQmVYmKywoRxosim8aCMa6tZtsTVhxmUdaYQ8bJ3xzbnkdM/image.png CCC로 넘어간게 보이시나요 ㅎㅎ 이렇게 하이퍼레져 예제 하나를 실습했네요 ! 다른 예제도 많으니 시간되실때 실습해보시기 바랄게요! 다음 포스팅에서는 Rest서버의 사용과 시간이 된다면 Front-end 화면까지 코딩을 직접 해보는 시간을 갖도록 할게요! 오늘 정말 포스팅이 길었네요 하하.. 모두들 오류없이 잘 진행되었으면 하는 바램입니다! 혹시라도 진행중에 오류가 있으신분은 댓글 남겨주시면 아는만큼! 모르면 저도 찾아보고 답글 드릴게요~ 수고하셨습니다 |
| json metadata | {"tags":["blockcahin","hyperledger","ethereum","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmWo6fEu5KWVb5Xbvr2NMSm37rxdrXYLR62fyh43neC2mD/image.png","https://cdn.steemitimages.com/DQmST8CEDvWeGQRpCWAxUwan2eqRd31DVoQkf3BFa64oNGp/image.png","https://cdn.steemitimages.com/DQmXxLPnVFvid3SYvVSyDiZQgVhRYPJg6S7sHNdGJy7idSX/image.png","https://cdn.steemitimages.com/DQmc9GWdcFbhfBDS8XuCbTXLTKhfoWrCJjFEqqJFwo7mDfM/image.png","https://cdn.steemitimages.com/DQmdKkQB1VUx6yP13gRJsgstd8FFcRPinBdPrbULHRY6HX4/image.png","https://cdn.steemitimages.com/DQmeoRMX5QYqDJoPSb12ZUwmyxBQGKzkpYDua5sRLTe28Ge/image.png","https://cdn.steemitimages.com/DQmZZ6vDXBPduk8W5nyhuTMwQi2CAHXgySCM4AAzem5bFVB/image.png","https://cdn.steemitimages.com/DQmTUqak9UUPF8rJfo8nVBWq81hvXLfUF96zbFMS4yPDcQe/image.png","https://cdn.steemitimages.com/DQmcH1pEMVWGJHPixdPnnE6kSoQChrrRfLVwEMVNZAgy3YV/image.png","https://cdn.steemitimages.com/DQmWv7fd8JtSvMeq4MoewzS8PhMtLWrpVz8pqCbmTjpKZMc/image.png","https://cdn.steemitimages.com/DQmcqz5FudjM4QigctX3WE8eNFYrZi7kJNaXgzBmC2LzVeU/image.png","https://cdn.steemitimages.com/DQmY6ksAQapfpGGb4DgDa9A2gE3skZFcXmcu3fRPRJbuxw5/image.png","https://cdn.steemitimages.com/DQmShRWtj6sTaCcM5QzGJ9nZvxoU9gqyo8otAnidUBG28no/image.png","https://cdn.steemitimages.com/DQmbjfpaMWbDBgmvSn4Ld4qfqrZ1uToeHWDjnJg6EJ6VfE6/image.png","https://cdn.steemitimages.com/DQmVZBHRna6Uiv1AfxhHMYheXmqUQfHu9GVkgX2znXFoAhr/image.png","https://cdn.steemitimages.com/DQmSYuVxn1WwzNUaP3joPyPEun2uHBArcxFhWoMwmyZxbth/image.png","https://cdn.steemitimages.com/DQmc4Dz9r2j12cxFBaKUWp9zkpkN2onzsT5pCSeWq3djLce/image.png","https://cdn.steemitimages.com/DQmcDCMhrT9RLWpM4hc3bePBVMpq81tLgK8iiVy6mase8Hr/image.png","https://cdn.steemitimages.com/DQmcqPPjdEb65XchuNEBhVL9hkhbHhHG4coTT3UG6qGieQu/image.png","https://cdn.steemitimages.com/DQmVKJUEpxKtiGABtYJUDiJuvHzQJ76pd6J6yJZBJ23pm3M/image.png","https://cdn.steemitimages.com/DQmUMUEBJX9bK4p8EBpHxR3UgjbnB6n6w1icfoY4Uairiaw/image.png","https://cdn.steemitimages.com/DQmWzCiyuxcQKsgHDHHMWWmgprgvXA7ByrMdgnS4w9Vwczf/image.png","https://cdn.steemitimages.com/DQmVYmKywoRxosim8aCMa6tZtsTVhxmUdaYQ8bJ3xzbnkdM/image.png"],"links":["https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 4-hyperledger-composer-2 |
| title | 하이퍼레져란 무엇인가!?(4. Hyperledger Composer 실습 2탄) |
| Transaction Info | Block #29189233/Trx 7013d3f5f7f8f417b0ee69ca3c94d53619317549 |
View Raw JSON Data
{
"block": 29189233,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!\n\n저번 포스팅에 이어서 오늘은 직접 하이퍼레져를 우분투에 설치하고 다뤄보는 시간을 갖도록 할게요!!\n\n다들 저번시간에 진행했던 버추얼박스내에 우분투를 실행해주세요!\n\n\n먼저 hyperledger composer를 사용하는데 필수 툴들을 설치할거예요!\n제가 따로 root권한으로 다운받으라고 말씀드리는거외에 절대로 sudo를 사용하시면 안됩니다!\n\n<b>- npm install -g [email protected]</b>\n<b>- npm install -g [email protected]</b>\n<b>- npm install -g [email protected]</b>\n<b>- npm install -g yo</b>\n\n위에 명령어를 터미널에서 실행해주시면 설치가 완료된답니다\n\n설치중하는데 시간이 상당히 소요됩니다 인내합시다!\n\n저포함 많은 분들이 리눅스를 많이 다뤄보시지는 않았을거예요.. 그러니 저희는 스냅샷을 중간중간 찍어두도록 할게요!\n여기까지 설치다 하셨던분들은 지난포스팅에서 말씀드렸던 버츄얼박스의 스냅샷을 한번씩 더 찍어주세요!\n\n\n자 이제 playgroud를 설치하면 저희는 playgroud를 사용할수가 있어져요! \n\n<b>- npm install -g [email protected]</b>\n위 명령어를 터미널창에 입력해주세요.\n\n그리고나서 fabric을 다운 받도록 할게요!\n\nfabric에서 따로 fabric 실습을 안했던 이유중 하나가 composer실습을 진행하면서 다 포함되어 있는 내용이기 때문입니다.\n\n\n<b>- mkdir ~/fabric-dev-servers && cd ~/fabric-dev-servers</b>\n<b>- curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz</b>\n<b>- tar -xvf fabric-dev-servers.tar.gz</b>\n\n위 명령어를 터미널창에 입력해주세요.\n\nfabric-dev-servers 폴더를 생성하고, 그 안에 hyperledger-fabric설치를 위한 파일을 다운받고 압축까지 한번에 풀어버리는 명령어입니다.\nhttps://cdn.steemitimages.com/DQmWo6fEu5KWVb5Xbvr2NMSm37rxdrXYLR62fyh43neC2mD/image.png\n\n이제 fabric-dev-servers폴더안에 위의 그림과같은 파일들이 생성되었을거예요\n\n그리고downloadFabric.sh 파일을 실행해주세요!\n\n<b>- ./downloadFabric.sh</b>\n위에 명령어입니다\n\n이부분에서도 시간이 많이 소요되죠..ㅠ 이제 설치과정은 거의다 끝나갑니다 !!\n\n지금 하고계신 설치 마무리하고, 바로실행해서 문제없이 구동이 되는지 확인해보고, rest서버를 이용해서\n\n실습을 진행할예정이예요!\n\n자 설치가 다 완료되었으면 이제 실행및, 피어관리자카드를 만드는 단계를 진행할거예요\n <b> - ./startFabric.sh </b>\n <b>- ./createPeerAdminCard.sh</b>\n\n정상적으로 오류가 없이 진행이 되셨다면 터미널창에서 카드가 생성된게 보이실거예요!\n\nhttps://cdn.steemitimages.com/DQmST8CEDvWeGQRpCWAxUwan2eqRd31DVoQkf3BFa64oNGp/image.png\n\n 카드라는것은 비지니스 네트워크에 접근할수있는 권한을 부여하고, 필요한 정보를 담고있는 신분증같은 \n역할을 담당하고 있어요 \nHyperledger Fabric 네트워크에 대해 안전하고, 편리하게 접근할수있도록 한답니다\n\n이부분에서는 Admin에대한 카드만 생성하였고, 이제 직접 playground를 실행해서 카드를 생성해보고\n샘플예제를 실행해보도록 할게요!\n\n\n<b> - composer-playground</b>\n명령어로 playground를 실행해주세요! \n127.0.0.1:8080로 접속되는걸 확인하실수가 있어요 ㅎㅎ 근데 리눅스에서 하자니 너무 불편한감이 있죠..\n\n저희는 포트포워딩 기능을 통해 윈도우에서 playground를 사용해 보도록 하죠!\n\nhttps://cdn.steemitimages.com/DQmXxLPnVFvid3SYvVSyDiZQgVhRYPJg6S7sHNdGJy7idSX/image.png\n버추얼박스에서 실행중인 우분투이미지파일을 오른쪽클릭후 설정에 들어가주세요\n\n그리고 네트워크->고급클릭!->포트포워딩 클릭해주세요\nhttps://cdn.steemitimages.com/DQmc9GWdcFbhfBDS8XuCbTXLTKhfoWrCJjFEqqJFwo7mDfM/image.png\n\nhttps://cdn.steemitimages.com/DQmdKkQB1VUx6yP13gRJsgstd8FFcRPinBdPrbULHRY6HX4/image.png\n\n3000번과 8080번 포트를 둘다 추가시켜주도록 할게요!\n\n지금은 8080번 포트만 사용하지만 다음에 실습할 Rest서버에서 3000번포트로 사용할 예정이기 때문입니다\n\n자 그럼 리눅스상에서 굳이 playground를 접속할 필요가 없어져요 ㅎㅎ\n\n윈도우상에서 인터넷을 열어주시고 127.0.0.1:8080 로 들어가봅시다!\n\nhttps://cdn.steemitimages.com/DQmeoRMX5QYqDJoPSb12ZUwmyxBQGKzkpYDua5sRLTe28Ge/image.png\n\n접속이 아주잘되네요!! 여기까지 오류없이 잘따라오셨으면 정말 칭찬해드리고싶어요.. \n저는 처음할때 리눅스만 약 20번을 지웠다가 깔았었죠 ㅠ\n\n초기화면에 카드가 하나보이실거예요 ! 저게 무엇인지 감이 오시나요??\n\n위에서 ./CreatePeerAdmin 명령어로 생성한 카드입니다.\n\n그럼 바로옆에 카드를 하나더 생성해볼게요!\nhttps://cdn.steemitimages.com/DQmZZ6vDXBPduk8W5nyhuTMwQi2CAHXgySCM4AAzem5bFVB/image.png\n\nDeploy a new business cards를 클릭해주세요!\n\nhttps://cdn.steemitimages.com/DQmTUqak9UUPF8rJfo8nVBWq81hvXLfUF96zbFMS4yPDcQe/image.png\n\n그리고 아래로 내려보시면 여러가지 Fabric 예제가 보이실거예요\n\n저는 carauction-network를 사용해서 테스트를 해볼게요!\n\n편하신거 아무거나 골라서 테스트를 해보셔도 무방합니다 ㅎㅎ\n\nhttps://cdn.steemitimages.com/DQmcH1pEMVWGJHPixdPnnE6kSoQChrrRfLVwEMVNZAgy3YV/image.png\n\n이부분에서 인증방식을 id and secret로 체크해주시고\n\nEnrollment ID : admin\nEnrollment Secret : adminpw 입력해주세요!\n\n그리고 맨위에 admin card name 설정하는 부분이 비어있죠 \n편하실대로 써도되지만, 저는 편의를 위해 admin@carauction-network라고 적을게요!\n제경험상 email형식을 제대로 맞추지 않으면 배포중에 오류가 생기더군요\n\nhttps://cdn.steemitimages.com/DQmWv7fd8JtSvMeq4MoewzS8PhMtLWrpVz8pqCbmTjpKZMc/image.png\n\n그리고 우측에 Deploy버튼을 눌러주시면 됩니다!\n\n여기서도 시간이 꽤걸리죠.. 우분투로 돌아가서 playground 실행시킨 터미널을 보시면\n막 뭔가를 하고있어요!\n\nhttps://cdn.steemitimages.com/DQmcqz5FudjM4QigctX3WE8eNFYrZi7kJNaXgzBmC2LzVeU/image.png\n\n아마도 현재 생성중이다 뭐 이런내용인거 같네요 \n\nhttps://cdn.steemitimages.com/DQmY6ksAQapfpGGb4DgDa9A2gE3skZFcXmcu3fRPRJbuxw5/image.png\n가운데 User ID에 Admin이라고 써있는거 보이시나요?\n\n저희가 카드 생성중에 admin/adminpw를 사용해서 만들었기때문입니다 ㅎㅎ\n\n음 아마도 admin권한이 아닌 임의의 user id를 만든후 그user id권한으로 card를 만든다면 그 user id가 적혀있겠죠?\n\n\n이제 정상적으로 생성이되었습니다. 방금 생성된 카드에서 Connect now를 통해 들어가 보도록 하죠\n\nhttps://cdn.steemitimages.com/DQmShRWtj6sTaCcM5QzGJ9nZvxoU9gqyo8otAnidUBG28no/image.png\n\n이부분이 바로 비지니스 모델을 정의하는 곳이예요!\n\n음 더 쉽게 말해서, 내가 원하는 규칙을 프로그래밍 시키고, hyperledger 블록과 연결이 되는 곳이죠 \n\n이부분은 수정하지않고, 진행할게요! 일단은 Hyperledger에서 제공해주는 예제를 사용해보도록 해요\n\nhttps://cdn.steemitimages.com/DQmbjfpaMWbDBgmvSn4Ld4qfqrZ1uToeHWDjnJg6EJ6VfE6/image.png\n\nTest탭으로 들어간후, 테스트를 진행해봅시다!\n\n옥션에 참여할 멤버부터 생성하도록 하죠\n\nhttps://cdn.steemitimages.com/DQmVZBHRna6Uiv1AfxhHMYheXmqUQfHu9GVkgX2znXFoAhr/image.png\n\n전 AAA,BBB,CCC라는 세개의 멤버를 생성했어요\n\nhttps://cdn.steemitimages.com/DQmSYuVxn1WwzNUaP3joPyPEun2uHBArcxFhWoMwmyZxbth/image.png\n\nbalance도 임의로주시고, 이름,이메일도 임의로 주세요\n\n각 멤버의 고유 ID로 활용되는게 email이니 중복되지않게 정의해주세요!\n\n그다음 차량을 한대 만들어보죠\n\nhttps://cdn.steemitimages.com/DQmc4Dz9r2j12cxFBaKUWp9zkpkN2onzsT5pCSeWq3djLce/image.png\n\nVehicle 탭에서 [email protected]의 소유로 차량을 한대 생성했어요.\n\nvin은 각차량마다 가지고있는 고유번호인데, 그냥 알기쉽게 간단하게 지정해줬습니다\n\n\n그리고! 차량 리스팅을통해 경매에 등록해보도록 합시다\n\nhttps://cdn.steemitimages.com/DQmcDCMhrT9RLWpM4hc3bePBVMpq81tLgK8iiVy6mase8Hr/image.png\n\n \"listingId\": \"listing1\",\n \"reservePrice\": 1000,\n \"description\": \"\",\n \"state\": \"FOR_SALE\",\n \"vehicle\": \"resource:org.acme.vehicle.auction.Vehicle#car1\" \nvehicle부분에서는 차량 생성할때 vin 적으셨던거 기억나시죠? 그값을 적어주시면 됩니다!\n\n자이제 좌측 하단부분에 Submit Transaction버튼을 클릭해주세요\n\nhttps://cdn.steemitimages.com/DQmcqPPjdEb65XchuNEBhVL9hkhbHhHG4coTT3UG6qGieQu/image.png\n\n\nhttps://cdn.steemitimages.com/DQmVKJUEpxKtiGABtYJUDiJuvHzQJ76pd6J6yJZBJ23pm3M/image.png\n\n빨간 박스부분을 Offer로 바꿔주시고, 위에처럼 입력하고 submit버튼을 클릭해주세요\n\[email protected] 멤버가 3000원에 입찰을했으니 [email protected] 멤버로 5000원에 입찰을 한번더 하고,\n\n경매를 끝내보도록하죠\n\nSubmit Transaction 버튼을 다시한번 눌러주세요\n\nhttps://cdn.steemitimages.com/DQmUMUEBJX9bK4p8EBpHxR3UgjbnB6n6w1icfoY4Uairiaw/image.png\n\n그러면 경매가 끝나게되고, 최고입찰자에게 차동차가 넘어가게됩니다\n\nhttps://cdn.steemitimages.com/DQmWzCiyuxcQKsgHDHHMWWmgprgvXA7ByrMdgnS4w9Vwczf/image.png\n\nCCC의 balance가 5000원줄고 AAA의 balance가 5000원 늘은게 보이시죠?\n\n처음에 10000원씩 주려했는데 0이 하나씩 더붙은채 줘버렸네요..ㅋㅋ 자 아무튼! 이제 자동차의 소유자를 보시죠\n\nhttps://cdn.steemitimages.com/DQmVYmKywoRxosim8aCMa6tZtsTVhxmUdaYQ8bJ3xzbnkdM/image.png\n\nCCC로 넘어간게 보이시나요 ㅎㅎ\n\n이렇게 하이퍼레져 예제 하나를 실습했네요 !\n\n다른 예제도 많으니 시간되실때 실습해보시기 바랄게요!\n\n다음 포스팅에서는 Rest서버의 사용과 시간이 된다면 Front-end 화면까지 코딩을 직접 해보는 시간을 갖도록 할게요!\n\n오늘 정말 포스팅이 길었네요 하하.. 모두들 오류없이 잘 진행되었으면 하는 바램입니다!\n\n혹시라도 진행중에 오류가 있으신분은 댓글 남겨주시면 아는만큼! 모르면 저도 찾아보고 답글 드릴게요~\n\n수고하셨습니다",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"ethereum\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmWo6fEu5KWVb5Xbvr2NMSm37rxdrXYLR62fyh43neC2mD/image.png\",\"https://cdn.steemitimages.com/DQmST8CEDvWeGQRpCWAxUwan2eqRd31DVoQkf3BFa64oNGp/image.png\",\"https://cdn.steemitimages.com/DQmXxLPnVFvid3SYvVSyDiZQgVhRYPJg6S7sHNdGJy7idSX/image.png\",\"https://cdn.steemitimages.com/DQmc9GWdcFbhfBDS8XuCbTXLTKhfoWrCJjFEqqJFwo7mDfM/image.png\",\"https://cdn.steemitimages.com/DQmdKkQB1VUx6yP13gRJsgstd8FFcRPinBdPrbULHRY6HX4/image.png\",\"https://cdn.steemitimages.com/DQmeoRMX5QYqDJoPSb12ZUwmyxBQGKzkpYDua5sRLTe28Ge/image.png\",\"https://cdn.steemitimages.com/DQmZZ6vDXBPduk8W5nyhuTMwQi2CAHXgySCM4AAzem5bFVB/image.png\",\"https://cdn.steemitimages.com/DQmTUqak9UUPF8rJfo8nVBWq81hvXLfUF96zbFMS4yPDcQe/image.png\",\"https://cdn.steemitimages.com/DQmcH1pEMVWGJHPixdPnnE6kSoQChrrRfLVwEMVNZAgy3YV/image.png\",\"https://cdn.steemitimages.com/DQmWv7fd8JtSvMeq4MoewzS8PhMtLWrpVz8pqCbmTjpKZMc/image.png\",\"https://cdn.steemitimages.com/DQmcqz5FudjM4QigctX3WE8eNFYrZi7kJNaXgzBmC2LzVeU/image.png\",\"https://cdn.steemitimages.com/DQmY6ksAQapfpGGb4DgDa9A2gE3skZFcXmcu3fRPRJbuxw5/image.png\",\"https://cdn.steemitimages.com/DQmShRWtj6sTaCcM5QzGJ9nZvxoU9gqyo8otAnidUBG28no/image.png\",\"https://cdn.steemitimages.com/DQmbjfpaMWbDBgmvSn4Ld4qfqrZ1uToeHWDjnJg6EJ6VfE6/image.png\",\"https://cdn.steemitimages.com/DQmVZBHRna6Uiv1AfxhHMYheXmqUQfHu9GVkgX2znXFoAhr/image.png\",\"https://cdn.steemitimages.com/DQmSYuVxn1WwzNUaP3joPyPEun2uHBArcxFhWoMwmyZxbth/image.png\",\"https://cdn.steemitimages.com/DQmc4Dz9r2j12cxFBaKUWp9zkpkN2onzsT5pCSeWq3djLce/image.png\",\"https://cdn.steemitimages.com/DQmcDCMhrT9RLWpM4hc3bePBVMpq81tLgK8iiVy6mase8Hr/image.png\",\"https://cdn.steemitimages.com/DQmcqPPjdEb65XchuNEBhVL9hkhbHhHG4coTT3UG6qGieQu/image.png\",\"https://cdn.steemitimages.com/DQmVKJUEpxKtiGABtYJUDiJuvHzQJ76pd6J6yJZBJ23pm3M/image.png\",\"https://cdn.steemitimages.com/DQmUMUEBJX9bK4p8EBpHxR3UgjbnB6n6w1icfoY4Uairiaw/image.png\",\"https://cdn.steemitimages.com/DQmWzCiyuxcQKsgHDHHMWWmgprgvXA7ByrMdgnS4w9Vwczf/image.png\",\"https://cdn.steemitimages.com/DQmVYmKywoRxosim8aCMa6tZtsTVhxmUdaYQ8bJ3xzbnkdM/image.png\"],\"links\":[\"https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "4-hyperledger-composer-2",
"title": "하이퍼레져란 무엇인가!?(4. Hyperledger Composer 실습 2탄)"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-05T12:31:24",
"trx_id": "7013d3f5f7f8f417b0ee69ca3c94d53619317549",
"trx_in_block": 2,
"virtual_op": 0
}minhokimpublished a new post: 2-hyperledger-composer2019/01/05 10:49:18
minhokimpublished a new post: 2-hyperledger-composer
2019/01/05 10:49:18
| author | minhokim |
| body | @@ -509,16 +509,17 @@ als.html + %EC%97%90 %EB%82%98%EC%99%80%EC%9E%88%EB%8A%94 %ED%8A%9C |
| json metadata | {"tags":["blockcahin","hyperledger","ethereum","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png","https://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png","https://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png","https://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png","https://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png","https://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png","https://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png","https://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png","https://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png","https://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png","https://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png","https://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png","https://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png","https://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png","https://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png","https://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png"],"links":["https://hyperledger.github.io/composer/latest/tutorials/tutorials.html","https://www.virtualbox.org/wiki/Downloads","http://releases.ubuntu.com/16.04/","https://hyperledger.github.io/composer/latest/installing/installing-prereqs","https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 2-hyperledger-composer |
| title | 하이퍼레져란 무엇인가!?(3. Hyperledger Composer 실습) |
| Transaction Info | Block #29187193/Trx 4fb938844a32bc319448e341b522f625e2ed2a81 |
View Raw JSON Data
{
"block": 29187193,
"op": [
"comment",
{
"author": "minhokim",
"body": "@@ -509,16 +509,17 @@\n als.html\n+ \n %EC%97%90 %EB%82%98%EC%99%80%EC%9E%88%EB%8A%94 %ED%8A%9C\n",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"ethereum\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png\",\"https://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png\",\"https://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png\",\"https://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png\",\"https://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png\",\"https://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png\",\"https://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png\",\"https://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png\",\"https://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png\",\"https://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png\",\"https://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png\",\"https://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png\",\"https://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png\",\"https://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png\",\"https://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png\",\"https://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png\"],\"links\":[\"https://hyperledger.github.io/composer/latest/tutorials/tutorials.html\",\"https://www.virtualbox.org/wiki/Downloads\",\"http://releases.ubuntu.com/16.04/\",\"https://hyperledger.github.io/composer/latest/installing/installing-prereqs\",\"https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "2-hyperledger-composer",
"title": "하이퍼레져란 무엇인가!?(3. Hyperledger Composer 실습)"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-05T10:49:18",
"trx_id": "4fb938844a32bc319448e341b522f625e2ed2a81",
"trx_in_block": 4,
"virtual_op": 0
}fyrstikkenupvoted (1.00%) @minhokim / 2-hyperledger-composer2019/01/05 07:34:42
fyrstikkenupvoted (1.00%) @minhokim / 2-hyperledger-composer
2019/01/05 07:34:42
| author | minhokim |
| permlink | 2-hyperledger-composer |
| voter | fyrstikken |
| weight | 100 (1.00%) |
| Transaction Info | Block #29183310/Trx c1668ab076574ddbcc34e6603c8884d88520f936 |
View Raw JSON Data
{
"block": 29183310,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "2-hyperledger-composer",
"voter": "fyrstikken",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2019-01-05T07:34:42",
"trx_id": "c1668ab076574ddbcc34e6603c8884d88520f936",
"trx_in_block": 15,
"virtual_op": 0
}2019/01/05 07:17:51
2019/01/05 07:17:51
| amount | 0.001 STEEM |
| from | allaz |
| memo | Promote your post. Your post will be min. 10 resteemed with over 13000 followers and min. 25 Upvote Different account (5000 STEEM POWER). Your post will be more popular and you will find new friends. Send 0.5 SBD or STEEM to @allaz (post URL as memo ) Service Active. |
| to | minhokim |
| Transaction Info | Block #29182974/Trx b156b24e025f94bf1a3a8c8d448aded6a140facf |
View Raw JSON Data
{
"block": 29182974,
"op": [
"transfer",
{
"amount": "0.001 STEEM",
"from": "allaz",
"memo": "Promote your post. Your post will be min. 10 resteemed with over 13000 followers and min. 25 Upvote Different account (5000 STEEM POWER). Your post will be more popular and you will find new friends. Send 0.5 SBD or STEEM to @allaz (post URL as memo ) Service Active.",
"to": "minhokim"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-05T07:17:51",
"trx_id": "b156b24e025f94bf1a3a8c8d448aded6a140facf",
"trx_in_block": 11,
"virtual_op": 0
}minhokimpublished a new post: 2-hyperledger-composer2019/01/05 07:16:51
minhokimpublished a new post: 2-hyperledger-composer
2019/01/05 07:16:51
| author | minhokim |
| body | 안녕하세요!! 2019년 새해가 밝았네요!! 모두들 새해복 많이 받으셨으면 좋겠습니다! ㅎㅎ 오늘은 하이퍼레져 컴포저에 대해서 간단한 설명과 실습을 진행할 예정입니다! Hyperledger Composer 이란!? 블록체인 네트워크의 비지니스 모델을 쉽게 정의하고 만들수 있도록 IBM에서 제공하는 툴(?) 프레임워크(?) 같은 느낌으로 생각하시면 이해하기 쉬우실거예요! 하이퍼레져 컴포저로 비지니스 네트워크 모델을 정의하고, 여기서 정의한 모델을 패브릭에 적용시키는 방법으로 하이퍼레져 블록체인을 구축하신다면 굉장히 편하고, 시간이 단축된답니다. 컴포저없이 패브릭에서 비지니스 모델을 구축한다고 가정하였을때,파일의 경로부터 모든 코드를 하나하나 다 수정해야하고.. 여간 불편한게 아니죠 그래서 누구나 쉽게 구축할수있도록 IBM에서 제공해주고 있답니다! 저희가 실습할 내용은 https://hyperledger.github.io/composer/latest/tutorials/tutorials.html에 나와있는 튜토리얼을 토대로 실습을 할예정이구, 마지막에는 직접 프론트엔드 화면을 구축하고 적용시켜 보는것 까지 할거예요! 기본 설정을 튜토리얼을 따라하지만, 프론트엔드 즉 클라이언트쪽 화면은 저희가 직접 생각해가며 만들고 적용 시킬예정이니, 잘따라와 주셨으면 합니다. 기본적으로 맥이나 리눅스를 쓰시는분들은 Hyperledger Composer을 그냥 설치해서 사용하면 되지만, 저처럼 윈도우를 쓰시는 분들은 따로 리눅스환경을 만들어야해요! 초기 세팅환경 구축을 위해 설치해야할 파일이 조금 있답니다! 이제부터 같이 환경을 만들어나가요! <hr/> <h4>오라클 버츄얼 박스</h4> https://www.virtualbox.org/wiki/Downloads https://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png 위에 링크에서 윈도우환경으로 설치해주시면 되겠습니다! <h4>리눅스 우분투 16.04 버전</h4> 저희는 모두 리눅스 초보자기 때문에 desktop모드로 다운받을게요! http://releases.ubuntu.com/16.04/ https://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png 이 우분투파일은 버츄얼 박스에 올려서 설치할거예요! 자 버츄얼박스를 실행해주시고, 새로만들기 버튼 눌러주세요! https://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png 하이퍼레져를 구축하기위한 최소사양이 4기가여서 넉넉하게 5기가로 잡아주세요 https://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png 그리고 기본값으로 다음 다음 다음 계속 눌러주시다가, 용량을 20기가정도로 잡아주세요! 기본값으로 10기가있는대로 사용하면 용량이 부족하더라구요 그래서 미리 넉넉하게 잡아줄게요! https://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png 그리고 만들기! 누르고 시작버튼을 눌러주세요 https://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png 실행이되면 가상 디스크를 넣으라고 하는데요! 이때 아까 다운받은 우분투16.04 desktop버전을 넣어주시면 된답니다 https://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png 저희는 한국사람이니까.. 한국어로 언어를 선택하죠! 그리고 설치를 눌러주세요 https://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png 설치중 업데이트 하겠다 체크해주시구요! https://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png 그리고 다음다음 설치설치 계속계속 눌러주시면 됩니다 이름과 암호는 편하신걸로 지정해주시구요 https://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png 그리고 설치를 진행해주시면 된답니다 ! 드디어 설치가 완료 되었네요! 로그인하시고 터미널창을 열어주세요! https://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png 앞으로 설치할 모든 파일은 root권한이 아닌 사용자권한으로 설치할거예요! sudo를 사용해 설치를 할지언정, 절대로 root 권한으로 접속하시면 안됩니다! 먼저 curl을 설치해주세요! curl은 서버와 통신을 할수있게 해주는 툴이라고 생각하시면되요! 그래서 저희는 curl설치후, curl을 통해 hyperledger 서버에 접속해서 제공하는 파일을 다운받을 거랍니다! https://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png <b>- sudo apt-get install curl</b> 제가 앞으로 설치할 내용들은 모두 Hyperledger 공식 홈페이지 튜토리얼을 따라한거입니다! https://hyperledger.github.io/composer/latest/installing/installing-prereqs 이 튜도리얼에서는 클라이언트화면구축까지는 다루지 않아서 저는 그부분까지 다룰 예정이니 참고부탁드릴게요! 자 다음으로 curl을 통해서 hyperledger서버에서 prereqs-ubuntu.sh 라는 파일을 가져와 설치할거예요! <b>- curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh </b> <b>chmod u+x prereqs-ubuntu.sh</b> 위에부분을 커맨드에 입력해주세요! 이 prereqs-ubuntu.sh에는 hyperledger composer를 사용하기위해 필요한 설치파일및 최적화된 버전에 대해서 간단하게 설치할수있도록 정의된 파일이예요 <b> ./prereqs-ubuntu.sh</b> 마찬가지로 이부분도 커맨드에 입력! 로 설치해주세요! 앞으로 기본 환경세팅 관련해서 설치해야할게 많아요 ㅠ 인내의 시간입니다. 이번 시간은 설치까지만 다루고 다음시간부터 직접 테스트를 진행해볼게요! 자 prereqs-ubuntu파일에 정의된 내용이 모두 설치가 끝났다면 확인해보죠! <b> - sudo docker version</b> <b>- git --version</b> <b>- python --version</b> <b>- node -v</b> <b>- npm -v <b/> 노드랑 npm이 설치가 안되있다고 나오네요 전... 하지만 재부팅을 하고나면 설치가 되어있기때문에 저희는 재부팅후 다시 확인하도록 할게요! 재부팅하는김에 스냅샷 하나찍고가시죠! https://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png 버츄얼박스의 스냅샷 기능은 윈도우에서의 복원 기능이랑 같은거라고 보시면될거같아요 다시 그때로 돌아가는 바로 그기능! 스냅샷을 잘찍고 다시 우분투를 실행한후 node,npm을 확인하면! https://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png 정상적으로 설치가 완료되었습니다! 마지막으로 vscode까지 설치를 한후 오늘은 마무리 지을게요! vscode 홈페이지에서 리눅스전용으로 다운받으시면 됩니다 https://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png 리눅스 전용으로 .deb파일과 .rpm 파일이있는데 저희는 우분투를 사용하기때문에 .deb로 설치를 해주세요! https://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png 정상적으로 설치되고 실행까지 되는 모습입니다 ㅎㅎ 오늘은 여기서 마무리짓고 다음시간에는 hyperledger사용을위한 설치+간단실습을 진행해보도록 할게요! |
| json metadata | {"tags":["blockcahin","hyperledger","ethereum","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png","https://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png","https://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png","https://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png","https://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png","https://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png","https://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png","https://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png","https://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png","https://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png","https://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png","https://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png","https://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png","https://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png","https://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png","https://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png"],"links":["https://hyperledger.github.io/composer/latest/tutorials/tutorials.html에","https://www.virtualbox.org/wiki/Downloads","http://releases.ubuntu.com/16.04/","https://hyperledger.github.io/composer/latest/installing/installing-prereqs","https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 2-hyperledger-composer |
| title | 하이퍼레져란 무엇인가!?(3. Hyperledger Composer 실습) |
| Transaction Info | Block #29182954/Trx b8dfe12ed24347ff1a2a8d5f3fda93b2df3181f8 |
View Raw JSON Data
{
"block": 29182954,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!!\n\n2019년 새해가 밝았네요!! 모두들 새해복 많이 받으셨으면 좋겠습니다! ㅎㅎ\n\n\n오늘은 하이퍼레져 컴포저에 대해서 간단한 설명과 실습을 진행할 예정입니다!\n\n\nHyperledger Composer 이란!?\n\n블록체인 네트워크의 비지니스 모델을 쉽게 정의하고 만들수 있도록 IBM에서 제공하는 툴(?) 프레임워크(?)\n같은 느낌으로 생각하시면 이해하기 쉬우실거예요!\n\n하이퍼레져 컴포저로 비지니스 네트워크 모델을 정의하고, 여기서 정의한 모델을 패브릭에 적용시키는 방법으로\n\n하이퍼레져 블록체인을 구축하신다면 굉장히 편하고, 시간이 단축된답니다.\n\n컴포저없이 패브릭에서 비지니스 모델을 구축한다고 가정하였을때,파일의 경로부터 모든 코드를 하나하나 다 수정해야하고.. 여간 불편한게 아니죠 \n\n그래서 누구나 쉽게 구축할수있도록 IBM에서 제공해주고 있답니다!\n\n저희가 실습할 내용은 https://hyperledger.github.io/composer/latest/tutorials/tutorials.html에 나와있는 튜토리얼을 토대로 실습을 할예정이구, 마지막에는 직접 프론트엔드 화면을 구축하고 적용시켜 보는것 까지 할거예요!\n\n기본 설정을 튜토리얼을 따라하지만, 프론트엔드 즉 클라이언트쪽 화면은 저희가 직접 생각해가며 만들고 적용 시킬예정이니, 잘따라와 주셨으면 합니다.\n\n\n기본적으로 맥이나 리눅스를 쓰시는분들은 Hyperledger Composer을 그냥 설치해서 사용하면 되지만, \n저처럼 윈도우를 쓰시는 분들은 따로 리눅스환경을 만들어야해요!\n\n초기 세팅환경 구축을 위해 설치해야할 파일이 조금 있답니다!\n\n이제부터 같이 환경을 만들어나가요!\n\n<hr/>\n<h4>오라클 버츄얼 박스</h4>\nhttps://www.virtualbox.org/wiki/Downloads\nhttps://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png\n\n위에 링크에서 윈도우환경으로 설치해주시면 되겠습니다!\n\n\n<h4>리눅스 우분투 16.04 버전</h4>\n저희는 모두 리눅스 초보자기 때문에 desktop모드로 다운받을게요!\nhttp://releases.ubuntu.com/16.04/\nhttps://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png\n\n이 우분투파일은 버츄얼 박스에 올려서 설치할거예요!\n\n\n자 버츄얼박스를 실행해주시고, 새로만들기 버튼 눌러주세요!\nhttps://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png\n\n하이퍼레져를 구축하기위한 최소사양이 4기가여서 넉넉하게 5기가로 잡아주세요\nhttps://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png\n\n그리고 기본값으로 다음 다음 다음 계속 눌러주시다가, 용량을 20기가정도로 잡아주세요!\n기본값으로 10기가있는대로 사용하면 용량이 부족하더라구요 그래서 미리 넉넉하게 잡아줄게요!\n\nhttps://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png\n\n\n\n그리고 만들기! 누르고 시작버튼을 눌러주세요\nhttps://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png\n\n실행이되면 가상 디스크를 넣으라고 하는데요! 이때 아까 다운받은 우분투16.04 desktop버전을 \n넣어주시면 된답니다\n\nhttps://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png\n\n\n저희는 한국사람이니까.. 한국어로 언어를 선택하죠! 그리고 설치를 눌러주세요\nhttps://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png\n\n설치중 업데이트 하겠다 체크해주시구요!\nhttps://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png\n\n그리고 다음다음 설치설치 계속계속 눌러주시면 됩니다 \n\n이름과 암호는 편하신걸로 지정해주시구요\n\nhttps://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png\n\n그리고 설치를 진행해주시면 된답니다 ! \n\n드디어 설치가 완료 되었네요! 로그인하시고 터미널창을 열어주세요!\n\nhttps://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png\n\n앞으로 설치할 모든 파일은 root권한이 아닌 사용자권한으로 설치할거예요!\n\nsudo를 사용해 설치를 할지언정, 절대로 root 권한으로 접속하시면 안됩니다! \n\n먼저 curl을 설치해주세요!\ncurl은 서버와 통신을 할수있게 해주는 툴이라고 생각하시면되요!\n\n그래서 저희는 curl설치후, curl을 통해 hyperledger 서버에 접속해서 제공하는 파일을 다운받을 거랍니다!\n\n\nhttps://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png\n\n<b>- sudo apt-get install curl</b>\n\n제가 앞으로 설치할 내용들은 모두 Hyperledger 공식 홈페이지 튜토리얼을 따라한거입니다!\nhttps://hyperledger.github.io/composer/latest/installing/installing-prereqs\n\n이 튜도리얼에서는 클라이언트화면구축까지는 다루지 않아서 저는 그부분까지 다룰 예정이니 참고부탁드릴게요!\n\n자 다음으로 curl을 통해서 hyperledger서버에서 prereqs-ubuntu.sh 라는 파일을 가져와 설치할거예요!\n\n<b>- curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh </b>\n\n<b>chmod u+x prereqs-ubuntu.sh</b>\n\n위에부분을 커맨드에 입력해주세요!\n\n이 prereqs-ubuntu.sh에는 hyperledger composer를 사용하기위해 필요한 설치파일및 최적화된 버전에 대해서 간단하게 설치할수있도록 정의된 파일이예요\n\n<b> ./prereqs-ubuntu.sh</b>\n마찬가지로 이부분도 커맨드에 입력!\n\n로 설치해주세요! 앞으로 기본 환경세팅 관련해서 설치해야할게 많아요 ㅠ 인내의 시간입니다.\n\n이번 시간은 설치까지만 다루고 다음시간부터 직접 테스트를 진행해볼게요!\n\n자 prereqs-ubuntu파일에 정의된 내용이 모두 설치가 끝났다면 확인해보죠!\n\n<b> - sudo docker version</b>\n<b>- git --version</b>\n<b>- python --version</b>\n<b>- node -v</b>\n<b>- npm -v <b/>\n\n노드랑 npm이 설치가 안되있다고 나오네요 전... 하지만 재부팅을 하고나면 설치가 되어있기때문에\n저희는 재부팅후 다시 확인하도록 할게요!\n\n재부팅하는김에 스냅샷 하나찍고가시죠!\n\nhttps://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png\n\n버츄얼박스의 스냅샷 기능은 윈도우에서의 복원 기능이랑 같은거라고 보시면될거같아요\n\n다시 그때로 돌아가는 바로 그기능!\n\n스냅샷을 잘찍고 다시 우분투를 실행한후 node,npm을 확인하면!\n\nhttps://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png\n\n정상적으로 설치가 완료되었습니다!\n\n마지막으로 vscode까지 설치를 한후 오늘은 마무리 지을게요!\n vscode 홈페이지에서 리눅스전용으로 다운받으시면 됩니다\n\nhttps://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png\n\n리눅스 전용으로 .deb파일과 .rpm 파일이있는데 저희는 우분투를 사용하기때문에\n\n.deb로 설치를 해주세요! \n\nhttps://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png\n\n정상적으로 설치되고 실행까지 되는 모습입니다 ㅎㅎ\n\n오늘은 여기서 마무리짓고 다음시간에는 hyperledger사용을위한 설치+간단실습을 진행해보도록 할게요!",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"ethereum\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png\",\"https://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png\",\"https://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png\",\"https://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png\",\"https://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png\",\"https://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png\",\"https://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png\",\"https://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png\",\"https://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png\",\"https://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png\",\"https://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png\",\"https://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png\",\"https://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png\",\"https://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png\",\"https://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png\",\"https://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png\"],\"links\":[\"https://hyperledger.github.io/composer/latest/tutorials/tutorials.html에\",\"https://www.virtualbox.org/wiki/Downloads\",\"http://releases.ubuntu.com/16.04/\",\"https://hyperledger.github.io/composer/latest/installing/installing-prereqs\",\"https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "2-hyperledger-composer",
"title": "하이퍼레져란 무엇인가!?(3. Hyperledger Composer 실습)"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-05T07:16:51",
"trx_id": "b8dfe12ed24347ff1a2a8d5f3fda93b2df3181f8",
"trx_in_block": 11,
"virtual_op": 0
}minhokimpublished a new post: 2-hyperledger-composer2019/01/05 07:16:24
minhokimpublished a new post: 2-hyperledger-composer
2019/01/05 07:16:24
| author | minhokim |
| body | 안녕하세요!! 2019년 새해가 밝았네요!! 모두들 새해복 많이 받으셨으면 좋겠습니다! ㅎㅎ 오늘은 하이퍼레져 컴포저에 대해서 간단한 설명과 실습을 진행할 예정입니다! Hyperledger Composer 이란!? 블록체인 네트워크의 비지니스 모델을 쉽게 정의하고 만들수 있도록 IBM에서 제공하는 툴(?) 프레임워크(?) 같은 느낌으로 생각하시면 이해하기 쉬우실거예요! 하이퍼레져 컴포저로 비지니스 네트워크 모델을 정의하고, 여기서 정의한 모델을 패브릭에 적용시키는 방법으로 하이퍼레져 블록체인을 구축하신다면 굉장히 편하고, 시간이 단축된답니다. 컴포저없이 패브릭에서 비지니스 모델을 구축한다고 가정하였을때,파일의 경로부터 모든 코드를 하나하나 다 수정해야하고.. 여간 불편한게 아니죠 그래서 누구나 쉽게 구축할수있도록 IBM에서 제공해주고 있답니다! 저희가 실습할 내용은 https://hyperledger.github.io/composer/latest/tutorials/tutorials.html에 나와있는 튜토리얼을 토대로 실습을 할예정이구, 마지막에는 직접 프론트엔드 화면을 구축하고 적용시켜 보는것 까지 할거예요! 기본 설정을 튜토리얼을 따라하지만, 프론트엔드 즉 클라이언트쪽 화면은 저희가 직접 생각해가며 만들고 적용 시킬예정이니, 잘따라와 주셨으면 합니다. 기본적으로 맥이나 리눅스를 쓰시는분들은 Hyperledger Composer을 그냥 설치해서 사용하면 되지만, 저처럼 윈도우를 쓰시는 분들은 따로 리눅스환경을 만들어야해요! 초기 세팅환경 구축을 위해 설치해야할 파일이 조금 있답니다! 이제부터 같이 환경을 만들어나가요! <hr/> <h4>오라클 버츄얼 박스</h4> https://www.virtualbox.org/wiki/Downloads https://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png 위에 링크에서 윈도우환경으로 설치해주시면 되겠습니다! <h4>리눅스 우분투 16.04 버전</h4> 저희는 모두 리눅스 초보자기 때문에 desktop모드로 다운받을게요! http://releases.ubuntu.com/16.04/ https://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png 이 우분투파일은 버츄얼 박스에 올려서 설치할거예요! 자 버츄얼박스를 실행해주시고, 새로만들기 버튼 눌러주세요! https://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png 하이퍼레져를 구축하기위한 최소사양이 4기가여서 넉넉하게 5기가로 잡아주세요 https://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png 그리고 기본값으로 다음 다음 다음 계속 눌러주시다가, 용량을 20기가정도로 잡아주세요! 기본값으로 10기가있는대로 사용하면 용량이 부족하더라구요 그래서 미리 넉넉하게 잡아줄게요! https://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png 그리고 만들기! 누르고 시작버튼을 눌러주세요 https://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png 실행이되면 가상 디스크를 넣으라고 하는데요! 이때 아까 다운받은 우분투16.04 desktop버전을 넣어주시면 된답니다 https://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png 저희는 한국사람이니까.. 한국어로 언어를 선택하죠! 그리고 설치를 눌러주세요 https://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png 설치중 업데이트 하겠다 체크해주시구요! https://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png 그리고 다음다음 설치설치 계속계속 눌러주시면 됩니다 이름과 암호는 편하신걸로 지정해주시구요 https://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png 그리고 설치를 진행해주시면 된답니다 ! 드디어 설치가 완료 되었네요! 로그인하시고 터미널창을 열어주세요! https://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png 앞으로 설치할 모든 파일은 root권한이 아닌 사용자권한으로 설치할거예요! sudo를 사용해 설치를 할지언정, 절대로 root 권한으로 접속하시면 안됩니다! 먼저 curl을 설치해주세요! curl은 서버와 통신을 할수있게 해주는 툴이라고 생각하시면되요! 그래서 저희는 curl설치후, curl을 통해 hyperledger 서버에 접속해서 제공하는 파일을 다운받을 거랍니다! https://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png <b>- sudo apt-get install curl</b> 제가 앞으로 설치할 내용들은 모두 Hyperledger 공식 홈페이지 튜토리얼을 따라한거입니다! https://hyperledger.github.io/composer/latest/installing/installing-prereqs 이 튜도리얼에서는 클라이언트화면구축까지는 다루지 않아서 저는 그부분까지 다룰 예정이니 참고부탁드릴게요! 자 다음으로 curl을 통해서 hyperledger서버에서 prereqs-ubuntu.sh 라는 파일을 가져와 설치할거예요! <b>- curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh </b> <b>chmod u+x prereqs-ubuntu.sh</b> 위에부분을 커맨드에 입력해주세요! 이 prereqs-ubuntu.sh에는 hyperledger composer를 사용하기위해 필요한 설치파일및 최적화된 버전에 대해서 간단하게 설치할수있도록 정의된 파일이예요 <b> ./prereqs-ubuntu.sh</b> 마찬가지로 이부분도 커맨드에 입력! 로 설치해주세요! 앞으로 기본 환경세팅 관련해서 설치해야할게 많아요 ㅠ 인내의 시간입니다. 이번 시간은 설치까지만 다루고 다음시간부터 직접 테스트를 진행해볼게요! 자 prereqs-ubuntu파일에 정의된 내용이 모두 설치가 끝났다면 확인해보죠! <b> - sudo docker version</b> <b>- git --version</b> <b>- python --version</b> <b>- node -v</b> <b>- npm -v <b/> 노드랑 npm이 설치가 안되있다고 나오네요 전... 하지만 재부팅을 하고나면 설치가 되어있기때문에 저희는 재부팅후 다시 확인하도록 할게요! 재부팅하는김에 스냅샷 하나찍고가시죠! https://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png 버츄얼박스의 스냅샷 기능은 윈도우에서의 복원 기능이랑 같은거라고 보시면될거같아요 다시 그때로 돌아가는 바로 그기능! 스냅샷을 잘찍고 다시 우분투를 실행한후 node,npm을 확인하면! https://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png 정상적으로 설치가 완료되었습니다! 마지막으로 vscode까지 설치를 한후 오늘은 마무리 지을게요! vscode 홈페이지에서 리눅스전용으로 다운받으시면 됩니다 https://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png 리눅스 전용으로 .deb파일과 .rpm 파일이있는데 저희는 우분투를 사용하기때문에 .deb로 설치를 해주세요! https://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png 정상적으로 설치되고 실행까지 되는 모습입니다 ㅎㅎ 오늘은 여기서 마무리짓고 다음시간에는 hyperledger사용을위한 설치+간단실습을 진행해보도록 할게요! |
| json metadata | {"tags":["blockcahin","hyperledger","ethereum","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png","https://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png","https://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png","https://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png","https://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png","https://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png","https://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png","https://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png","https://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png","https://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png","https://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png","https://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png","https://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png","https://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png","https://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png","https://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png"],"links":["https://hyperledger.github.io/composer/latest/tutorials/tutorials.html에","https://www.virtualbox.org/wiki/Downloads","http://releases.ubuntu.com/16.04/","https://hyperledger.github.io/composer/latest/installing/installing-prereqs","https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 2-hyperledger-composer |
| title | 하이퍼레져란 무엇인가!?(2. Hyperledger Composer) |
| Transaction Info | Block #29182945/Trx 6b703106e5ad8224b71bec89030cba36ecd52353 |
View Raw JSON Data
{
"block": 29182945,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!!\n\n2019년 새해가 밝았네요!! 모두들 새해복 많이 받으셨으면 좋겠습니다! ㅎㅎ\n\n\n오늘은 하이퍼레져 컴포저에 대해서 간단한 설명과 실습을 진행할 예정입니다!\n\n\nHyperledger Composer 이란!?\n\n블록체인 네트워크의 비지니스 모델을 쉽게 정의하고 만들수 있도록 IBM에서 제공하는 툴(?) 프레임워크(?)\n같은 느낌으로 생각하시면 이해하기 쉬우실거예요!\n\n하이퍼레져 컴포저로 비지니스 네트워크 모델을 정의하고, 여기서 정의한 모델을 패브릭에 적용시키는 방법으로\n\n하이퍼레져 블록체인을 구축하신다면 굉장히 편하고, 시간이 단축된답니다.\n\n컴포저없이 패브릭에서 비지니스 모델을 구축한다고 가정하였을때,파일의 경로부터 모든 코드를 하나하나 다 수정해야하고.. 여간 불편한게 아니죠 \n\n그래서 누구나 쉽게 구축할수있도록 IBM에서 제공해주고 있답니다!\n\n저희가 실습할 내용은 https://hyperledger.github.io/composer/latest/tutorials/tutorials.html에 나와있는 튜토리얼을 토대로 실습을 할예정이구, 마지막에는 직접 프론트엔드 화면을 구축하고 적용시켜 보는것 까지 할거예요!\n\n기본 설정을 튜토리얼을 따라하지만, 프론트엔드 즉 클라이언트쪽 화면은 저희가 직접 생각해가며 만들고 적용 시킬예정이니, 잘따라와 주셨으면 합니다.\n\n\n기본적으로 맥이나 리눅스를 쓰시는분들은 Hyperledger Composer을 그냥 설치해서 사용하면 되지만, \n저처럼 윈도우를 쓰시는 분들은 따로 리눅스환경을 만들어야해요!\n\n초기 세팅환경 구축을 위해 설치해야할 파일이 조금 있답니다!\n\n이제부터 같이 환경을 만들어나가요!\n\n<hr/>\n<h4>오라클 버츄얼 박스</h4>\nhttps://www.virtualbox.org/wiki/Downloads\nhttps://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png\n\n위에 링크에서 윈도우환경으로 설치해주시면 되겠습니다!\n\n\n<h4>리눅스 우분투 16.04 버전</h4>\n저희는 모두 리눅스 초보자기 때문에 desktop모드로 다운받을게요!\nhttp://releases.ubuntu.com/16.04/\nhttps://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png\n\n이 우분투파일은 버츄얼 박스에 올려서 설치할거예요!\n\n\n자 버츄얼박스를 실행해주시고, 새로만들기 버튼 눌러주세요!\nhttps://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png\n\n하이퍼레져를 구축하기위한 최소사양이 4기가여서 넉넉하게 5기가로 잡아주세요\nhttps://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png\n\n그리고 기본값으로 다음 다음 다음 계속 눌러주시다가, 용량을 20기가정도로 잡아주세요!\n기본값으로 10기가있는대로 사용하면 용량이 부족하더라구요 그래서 미리 넉넉하게 잡아줄게요!\n\nhttps://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png\n\n\n\n그리고 만들기! 누르고 시작버튼을 눌러주세요\nhttps://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png\n\n실행이되면 가상 디스크를 넣으라고 하는데요! 이때 아까 다운받은 우분투16.04 desktop버전을 \n넣어주시면 된답니다\n\nhttps://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png\n\n\n저희는 한국사람이니까.. 한국어로 언어를 선택하죠! 그리고 설치를 눌러주세요\nhttps://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png\n\n설치중 업데이트 하겠다 체크해주시구요!\nhttps://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png\n\n그리고 다음다음 설치설치 계속계속 눌러주시면 됩니다 \n\n이름과 암호는 편하신걸로 지정해주시구요\n\nhttps://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png\n\n그리고 설치를 진행해주시면 된답니다 ! \n\n드디어 설치가 완료 되었네요! 로그인하시고 터미널창을 열어주세요!\n\nhttps://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png\n\n앞으로 설치할 모든 파일은 root권한이 아닌 사용자권한으로 설치할거예요!\n\nsudo를 사용해 설치를 할지언정, 절대로 root 권한으로 접속하시면 안됩니다! \n\n먼저 curl을 설치해주세요!\ncurl은 서버와 통신을 할수있게 해주는 툴이라고 생각하시면되요!\n\n그래서 저희는 curl설치후, curl을 통해 hyperledger 서버에 접속해서 제공하는 파일을 다운받을 거랍니다!\n\n\nhttps://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png\n\n<b>- sudo apt-get install curl</b>\n\n제가 앞으로 설치할 내용들은 모두 Hyperledger 공식 홈페이지 튜토리얼을 따라한거입니다!\nhttps://hyperledger.github.io/composer/latest/installing/installing-prereqs\n\n이 튜도리얼에서는 클라이언트화면구축까지는 다루지 않아서 저는 그부분까지 다룰 예정이니 참고부탁드릴게요!\n\n자 다음으로 curl을 통해서 hyperledger서버에서 prereqs-ubuntu.sh 라는 파일을 가져와 설치할거예요!\n\n<b>- curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh </b>\n\n<b>chmod u+x prereqs-ubuntu.sh</b>\n\n위에부분을 커맨드에 입력해주세요!\n\n이 prereqs-ubuntu.sh에는 hyperledger composer를 사용하기위해 필요한 설치파일및 최적화된 버전에 대해서 간단하게 설치할수있도록 정의된 파일이예요\n\n<b> ./prereqs-ubuntu.sh</b>\n마찬가지로 이부분도 커맨드에 입력!\n\n로 설치해주세요! 앞으로 기본 환경세팅 관련해서 설치해야할게 많아요 ㅠ 인내의 시간입니다.\n\n이번 시간은 설치까지만 다루고 다음시간부터 직접 테스트를 진행해볼게요!\n\n자 prereqs-ubuntu파일에 정의된 내용이 모두 설치가 끝났다면 확인해보죠!\n\n<b> - sudo docker version</b>\n<b>- git --version</b>\n<b>- python --version</b>\n<b>- node -v</b>\n<b>- npm -v <b/>\n\n노드랑 npm이 설치가 안되있다고 나오네요 전... 하지만 재부팅을 하고나면 설치가 되어있기때문에\n저희는 재부팅후 다시 확인하도록 할게요!\n\n재부팅하는김에 스냅샷 하나찍고가시죠!\n\nhttps://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png\n\n버츄얼박스의 스냅샷 기능은 윈도우에서의 복원 기능이랑 같은거라고 보시면될거같아요\n\n다시 그때로 돌아가는 바로 그기능!\n\n스냅샷을 잘찍고 다시 우분투를 실행한후 node,npm을 확인하면!\n\nhttps://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png\n\n정상적으로 설치가 완료되었습니다!\n\n마지막으로 vscode까지 설치를 한후 오늘은 마무리 지을게요!\n vscode 홈페이지에서 리눅스전용으로 다운받으시면 됩니다\n\nhttps://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png\n\n리눅스 전용으로 .deb파일과 .rpm 파일이있는데 저희는 우분투를 사용하기때문에\n\n.deb로 설치를 해주세요! \n\nhttps://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png\n\n정상적으로 설치되고 실행까지 되는 모습입니다 ㅎㅎ\n\n오늘은 여기서 마무리짓고 다음시간에는 hyperledger사용을위한 설치+간단실습을 진행해보도록 할게요!",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"ethereum\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmW2wTMnTuLYLLoytxynZ2gZgFxddu39tP8g5f8LSw6ddo/image.png\",\"https://cdn.steemitimages.com/DQmcKFE6CZT5Su7YQWSxK2Dw3CeLqKQRLsSBuTNnyAvPfHW/image.png\",\"https://cdn.steemitimages.com/DQmNXHqw1j35s13oUmjJANdwC31v5aSzrnBgBaamiHmrQoc/image.png\",\"https://cdn.steemitimages.com/DQmZ6Qr8y4faZChGzcnwgeMaLZkvAy6fyMJ3iRsmDHGsrAb/image.png\",\"https://cdn.steemitimages.com/DQmVGAQCQPJJMipuM423JNw1nBpERY3RvX8wi66czKy8SNi/image.png\",\"https://cdn.steemitimages.com/DQmZ7eNXq5ALwbqYKhPp7Qnz8fPqXwzmWh3EmL7AdAacfNv/image.png\",\"https://cdn.steemitimages.com/DQmej74yyv3m1qqZgm5XR8vxUpf8h6XoYjZqTdY3GPwipV5/image.png\",\"https://cdn.steemitimages.com/DQmRZwLTfR7kfAK9VRwBerTLBaNaby4w8ih5jRZPuvv7tcJ/image.png\",\"https://cdn.steemitimages.com/DQmVBvL7UjYtcs5F3awmL448YQcSBFKGbs3XoGDvHFWKqez/image.png\",\"https://cdn.steemitimages.com/DQmVkfDFvzFBr5qBGUS9nEfK6z3TkznYWUbjLtdUbr66o5w/image.png\",\"https://cdn.steemitimages.com/DQmdVaAh1rXMDzWxLLiqkJui1ghFnPL4tigcCyf5hP7WDop/image.png\",\"https://cdn.steemitimages.com/DQmSdi5mpWSL3wsTBDE4qLb1TX4hyK5ZC1e9BSTWb8ovaT9/image.png\",\"https://cdn.steemitimages.com/DQmQs5R6bDWDNb1sjp2SgAupt1mrGZ44r2enad8bqbSp5ER/image.png\",\"https://cdn.steemitimages.com/DQmejzpDDPcQfvhf56dYqjkYL3LFjmsyRgp1dapS4FKRefd/image.png\",\"https://cdn.steemitimages.com/DQmfEbbMxBPZY22DR4FsFd7dvAepYhzRjfGGnBs2QpJhmJ4/image.png\",\"https://cdn.steemitimages.com/DQmP6BMjEgDii4s7Yp2TdL45FHLHsLQeb8JuRg8zkK4m1sh/image.png\"],\"links\":[\"https://hyperledger.github.io/composer/latest/tutorials/tutorials.html에\",\"https://www.virtualbox.org/wiki/Downloads\",\"http://releases.ubuntu.com/16.04/\",\"https://hyperledger.github.io/composer/latest/installing/installing-prereqs\",\"https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "2-hyperledger-composer",
"title": "하이퍼레져란 무엇인가!?(2. Hyperledger Composer)"
}
],
"op_in_trx": 0,
"timestamp": "2019-01-05T07:16:24",
"trx_id": "6b703106e5ad8224b71bec89030cba36ecd52353",
"trx_in_block": 23,
"virtual_op": 0
}minhokimpublished a new post: 2-hyperledger-fabric2018/12/31 16:06:12
minhokimpublished a new post: 2-hyperledger-fabric
2018/12/31 16:06:12
| author | minhokim |
| body | @@ -1514,21 +1514,54 @@ ... -%EC%95%84%EB%9E%98%EC%84%9C %EB%94%B0%EB%A1%9C %EB%8B%A4%EB%A3%A8 + %EB%82%98%EC%A4%91%EC%97%90 Fabric%EC%97%90 %EB%8C%80%ED%95%9C %EA%B0%84%EB%8B%A8%ED%95%9C %EC%8B%A4%EC%8A%B5%EC%9D%84 %EC%A7%84%ED%96%89%ED%95%A0%EB%95%8C %EB%8D%94 %EC%9E%90%EC%84%B8%ED%9E%88 %EB%8B%A4%EB%A3%A8%EB%8F%84%EB%A1%9D %ED%95%98 %EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4 +! %0A%0A%EC%97%AC%EA%B8%B0 |
| json metadata | {"tags":["blockcahin","hyperledger","ethereum","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmYUYgQF9Ac2pC2cDUN626ZmtquCfTPcgubTG2pTWw1W47/image.png"],"links":["https://hyperledger-fabric.readthedocs.io/en/release-1.2/network/network.html","https://hyperledger-fabric.readthedocs.io"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 2-hyperledger-fabric |
| title | 하이퍼레져란 무엇인가!?(2. Hyperledger Fabric) |
| Transaction Info | Block #29049725/Trx e133eb235000e2dc79fcd495a658e01b5000c21e |
View Raw JSON Data
{
"block": 29049725,
"op": [
"comment",
{
"author": "minhokim",
"body": "@@ -1514,21 +1514,54 @@\n ... \n-%EC%95%84%EB%9E%98%EC%84%9C %EB%94%B0%EB%A1%9C %EB%8B%A4%EB%A3%A8\n+ %EB%82%98%EC%A4%91%EC%97%90 Fabric%EC%97%90 %EB%8C%80%ED%95%9C %EA%B0%84%EB%8B%A8%ED%95%9C %EC%8B%A4%EC%8A%B5%EC%9D%84 %EC%A7%84%ED%96%89%ED%95%A0%EB%95%8C %EB%8D%94 %EC%9E%90%EC%84%B8%ED%9E%88 %EB%8B%A4%EB%A3%A8%EB%8F%84%EB%A1%9D %ED%95%98\n %EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4\n+!\n %0A%0A%EC%97%AC%EA%B8%B0\n",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"ethereum\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmYUYgQF9Ac2pC2cDUN626ZmtquCfTPcgubTG2pTWw1W47/image.png\"],\"links\":[\"https://hyperledger-fabric.readthedocs.io/en/release-1.2/network/network.html\",\"https://hyperledger-fabric.readthedocs.io\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "2-hyperledger-fabric",
"title": "하이퍼레져란 무엇인가!?(2. Hyperledger Fabric)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-31T16:06:12",
"trx_id": "e133eb235000e2dc79fcd495a658e01b5000c21e",
"trx_in_block": 11,
"virtual_op": 0
}2018/12/31 16:05:18
2018/12/31 16:05:18
| author | minhokim |
| body | 안녕하세요! 요즘 이더리움 네트워크를 활용한 Dapp개발을 주로 포스팅했었는데요 오늘은 하이퍼레져대해서 포스팅을 해볼까합니다! 블록체인분야에 공부를 해보신분이라면 한번쯤은 하이퍼레져가 무엇인지 들어 보셨을거라고 생각하는데요! 물론 하이퍼레져에 대해 접하지 못하신분도 있을거 같아서!! 제가 오늘 간단하게 Private Blockchain이자 하이퍼레져가 무엇인지에 대해서 포스팅하려합니다 ㅎㅎ 하이퍼레져를 처음 접하시는분들이 가장 어려움을 느끼는 부분이 용어부분이죠 그래도 포기하지 마시고 잘 따라와 주셨으면 합니다!! <hr/> 블록체인을 접하실때 퍼블릭블록체인, 프라이빗블록체인, 컨소시움 블록체인 이렇게 들어보셨을거예요. 퍼블릭 블록체인이란것은 저희가 흔히 알고있는 비트코인,이더리움,이오스 등등 같은 블록체인을 말하는다는 것은 모든분들이 알고계시겠죠. 하지만 프라이빗이나, 컨소시움은 들어는 봤는데 그게뭐지? 하는 분들이 있으실건데 바로 이 하이퍼레져가 바로 프라이빗,컨소시움 블록체인이라고 불려지는 것들입니다!. 보시는 그림과 같이 하이퍼 레져는 종류도 여러가지고 툴도 여러가지가 있어요! https://cdn.steemitimages.com/DQmajyWyo1edRqipwtRA5hzXt1FEAzTTs6LXGK9yfXFNjLA/image.png 기업들이 퍼블릭 블록체인을 쓰기 꺼려하는 이유중 대표적인것들이 1. 높은 수수료 2. 낮은 트랜잭셕 속도및 처리량 3. 권한에대한 관리 4. 자사의 프로젝트에대한 기밀성 가장 대표적이기 때문에 하이퍼레져같은 프라이빗 블록체인을 도입하려는 기업들이 많아지고있어요! 하이퍼레져같은 프라이빗 블록체인의 가장 큰 장점이라 하면 1. 허가를 받은 사람만 블록체인 네트워크에 참여할수있기때문에 기밀성 유지! 2. 운영과 참여의 주체가 명확하기 때문에 코인의 발행이 필요가없음 3. 각각 참여자에 대한 권한 부여가능 4. 신뢰할수 있는 사람만이 참여하기때문에 트랜잭션의 속도가 빠름 이러한 장점때문에 은행에서 이러한 하이퍼레져 도입을 하고있는 중이라고 기사를 본적이 있어요! 프라이빗블록체인에서도 Fully Private Blockchain, Consortium Blockchain 두가지로 나눌수가 있어요 <b><h2>Fully Private Blockchain</h2></b> https://cdn.steemitimages.com/DQmd2yi5cHR74EPqG1cdPosvRNrVT8ahAQmUTHGJdQzfywM/image.png -하나의 기관이나 기업 아래서 사용 -데이터 관리과 검증, 거래내역에 접근하기가 쉽고 중앙기관이 존재 -블록체인 기술을 사용하지만, 중앙기관이 존재함으로 그저 분산된 데이터 베이스구조 -현재 시스템에 블록체인의 보안 검증성의 특징만 적용 중앙기관이 존재하는 블록체인이라.... 약간 블록체인이라고 칭하기 민망하지만 그래도.. 블록체인이긴 블록체인 이랍니다..ㅎㅎ <b><h2>Consortium Blockchain</h2></b> https://cdn.steemitimages.com/DQmebNe9zPSws33xDkAi712e9XP4Wm4VMjW3W1Z2Qb34P4N/image.png -여러 기관 또는 기업이 하나의 그룹을 이뤄 블록체인 네트워크를 구성 -퍼블릭+프라이빗 블록체인의 성격모두 적용 -각 노드에 특정 권한및 역할을 부여할수있음 바로 컨소시움 블록체인이 하이퍼레져가 추구하는 블록체인의 모델상이라고 보는게 제 주관적인 생각 입니다! <hr/> 이번 시간에는 간단히 Private Blockchain이 있다~ 라는 정도로 진행하였습니다. 다음시간에는 정말로 하이퍼레져 패브릭에 대한 이야기를 다루도록 할게요! 부족하지만 오늘도 방문해주셔서 감사합니다 |
| json metadata | {"tags":["blockchain","hyperledger","privateblockchain"],"image":["https://cdn.steemitimages.com/DQmajyWyo1edRqipwtRA5hzXt1FEAzTTs6LXGK9yfXFNjLA/image.png","https://cdn.steemitimages.com/DQmd2yi5cHR74EPqG1cdPosvRNrVT8ahAQmUTHGJdQzfywM/image.png","https://cdn.steemitimages.com/DQmebNe9zPSws33xDkAi712e9XP4Wm4VMjW3W1Z2Qb34P4N/image.png"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 1 |
| title | 하이퍼레져란 무엇인가!?(1. 프라이빗 블록체인) |
| Transaction Info | Block #29049707/Trx e32a0418afc92ed013e2669d9ac3ba3ced93a8ce |
View Raw JSON Data
{
"block": 29049707,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!\n\n요즘 이더리움 네트워크를 활용한 Dapp개발을 주로 포스팅했었는데요\n\n오늘은 하이퍼레져대해서 포스팅을 해볼까합니다!\n\n\n블록체인분야에 공부를 해보신분이라면 한번쯤은 하이퍼레져가 무엇인지 들어 보셨을거라고 생각하는데요!\n\n물론 하이퍼레져에 대해 접하지 못하신분도 있을거 같아서!! 제가 오늘 간단하게 Private Blockchain이자 하이퍼레져가 무엇인지에 대해서 포스팅하려합니다 ㅎㅎ\n\n\n하이퍼레져를 처음 접하시는분들이 가장 어려움을 느끼는 부분이 용어부분이죠 \n\n그래도 포기하지 마시고 잘 따라와 주셨으면 합니다!!\n\n<hr/>\n\n블록체인을 접하실때 퍼블릭블록체인, 프라이빗블록체인, 컨소시움 블록체인 이렇게 들어보셨을거예요.\n\n퍼블릭 블록체인이란것은 저희가 흔히 알고있는 비트코인,이더리움,이오스 등등 같은 블록체인을 말하는다는 것은\n\n모든분들이 알고계시겠죠.\n\n하지만 프라이빗이나, 컨소시움은 들어는 봤는데 그게뭐지? 하는 분들이 있으실건데 바로 이 하이퍼레져가\n\n바로 프라이빗,컨소시움 블록체인이라고 불려지는 것들입니다!.\n\n\n보시는 그림과 같이 하이퍼 레져는 종류도 여러가지고 툴도 여러가지가 있어요!\n\n\nhttps://cdn.steemitimages.com/DQmajyWyo1edRqipwtRA5hzXt1FEAzTTs6LXGK9yfXFNjLA/image.png\n\n\n\n\n기업들이 퍼블릭 블록체인을 쓰기 꺼려하는 이유중 대표적인것들이\n\n1. 높은 수수료\n2. 낮은 트랜잭셕 속도및 처리량\n3. 권한에대한 관리\n4. 자사의 프로젝트에대한 기밀성\n\n가장 대표적이기 때문에 하이퍼레져같은 프라이빗 블록체인을 도입하려는 기업들이 많아지고있어요!\n\n\n하이퍼레져같은 프라이빗 블록체인의 가장 큰 장점이라 하면\n1. 허가를 받은 사람만 블록체인 네트워크에 참여할수있기때문에 기밀성 유지!\n2. 운영과 참여의 주체가 명확하기 때문에 코인의 발행이 필요가없음\n3. 각각 참여자에 대한 권한 부여가능\n4. 신뢰할수 있는 사람만이 참여하기때문에 트랜잭션의 속도가 빠름\n\n이러한 장점때문에 은행에서 이러한 하이퍼레져 도입을 하고있는 중이라고 기사를 본적이 있어요!\n\n\n\n프라이빗블록체인에서도 Fully Private Blockchain, Consortium Blockchain 두가지로 나눌수가 있어요\n\n\n<b><h2>Fully Private Blockchain</h2></b>\nhttps://cdn.steemitimages.com/DQmd2yi5cHR74EPqG1cdPosvRNrVT8ahAQmUTHGJdQzfywM/image.png\n\n-하나의 기관이나 기업 아래서 사용\n-데이터 관리과 검증, 거래내역에 접근하기가 쉽고 중앙기관이 존재\n-블록체인 기술을 사용하지만, 중앙기관이 존재함으로 그저 분산된 데이터 베이스구조\n-현재 시스템에 블록체인의 보안 검증성의 특징만 적용\n\n중앙기관이 존재하는 블록체인이라.... 약간 블록체인이라고 칭하기 민망하지만 그래도.. 블록체인이긴 블록체인 이랍니다..ㅎㅎ\n\n<b><h2>Consortium Blockchain</h2></b>\nhttps://cdn.steemitimages.com/DQmebNe9zPSws33xDkAi712e9XP4Wm4VMjW3W1Z2Qb34P4N/image.png\n\n-여러 기관 또는 기업이 하나의 그룹을 이뤄 블록체인 네트워크를 구성\n-퍼블릭+프라이빗 블록체인의 성격모두 적용\n-각 노드에 특정 권한및 역할을 부여할수있음\n\n바로 컨소시움 블록체인이 하이퍼레져가 추구하는 블록체인의 모델상이라고 보는게 제 주관적인 생각 입니다!\n\n\n<hr/>\n\n이번 시간에는 간단히 Private Blockchain이 있다~ 라는 정도로 진행하였습니다.\n\n다음시간에는 정말로 하이퍼레져 패브릭에 대한 이야기를 다루도록 할게요!\n\n부족하지만 오늘도 방문해주셔서 감사합니다",
"json_metadata": "{\"tags\":[\"blockchain\",\"hyperledger\",\"privateblockchain\"],\"image\":[\"https://cdn.steemitimages.com/DQmajyWyo1edRqipwtRA5hzXt1FEAzTTs6LXGK9yfXFNjLA/image.png\",\"https://cdn.steemitimages.com/DQmd2yi5cHR74EPqG1cdPosvRNrVT8ahAQmUTHGJdQzfywM/image.png\",\"https://cdn.steemitimages.com/DQmebNe9zPSws33xDkAi712e9XP4Wm4VMjW3W1Z2Qb34P4N/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "1",
"title": "하이퍼레져란 무엇인가!?(1. 프라이빗 블록체인)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-31T16:05:18",
"trx_id": "e32a0418afc92ed013e2669d9ac3ba3ced93a8ce",
"trx_in_block": 6,
"virtual_op": 0
}minhokimpublished a new post: 2-hyperledger-fabric2018/12/31 09:06:57
minhokimpublished a new post: 2-hyperledger-fabric
2018/12/31 09:06:57
| author | minhokim |
| body | 안녕하세요! 이어서 바로 하이퍼레져 패브릭에 대해서 포스팅하려고합니다 ㅎㅎ 어려워요.. 저는 개념잡기가 조금 어려웠어요.. 새로운, 낯선 용어에 적응하는데 조금 시간이 걸렸답니다 https://cdn.steemitimages.com/DQmYUYgQF9Ac2pC2cDUN626ZmtquCfTPcgubTG2pTWw1W47/image.png 하이퍼 레져의 특징 1. 허가형 블록체인 (허가된 사용자만 사용가능, 각각 기관및 피어에 대해 권한 설정 가능) -멤버십 관리 서비스를 통해 허가된 참여자만 접근 가능 -참여자의 블록체인네트워크에 대한 권한을 설정 가능 -참여자의 어떤 행위에 대한 책임소재가 분명함 -높은 거래 완료성(거래가 승인이 완료되는 즉시 거래가 완료됨,블록을 생성함에있어 시간이 걸리지않음) 2. 일반 프로그래밍 언어 사용 -체인코드=>하이퍼레져의 Smart Contract -Go,nodejs사용 3. 내부 가상통화 부재(가상화폐가 필요없음, 필요에따라 구축가능) -허가된 사용자만 네트워크에 접근 가능 하기때문, Dos공격및 수수료에 대한 고려 할필요가 없음 4. 높은 성능(쓸모없이 채굴같은 자원소모가 없음) 5. 멀티 블록체인 지원 -전체 시스템을 다수의 채널로 구분(각 기관은 한개 혹은 다수의 채널에 가입 가능) -채널별로 독립적인 블록체인 유지 가능 <hr/> 그리고 하이퍼레져에서는 노드에 대해서도 이해하고 있어야합니다 크게 클라이언트노드, 피어노드, 오더러노드, MSP(Membership Service Procider) 네가지가 있어요! 각각에 대해서 설명 드릴게요 ㅎ <b>클라이언트 노드(Client Node)</b> -사용자를 대신하여 거래를 생성하고, 체인코드 실행을 호출하는 노드 -클라이언트 노드는 거래를 생성해 endorsing node에게 제출함으로써 거래의 보증을 확인받음 <b>피어노드(Peer Node) & Endorsing Node</b> -피어노드는 거래를 확정하는 역할 -거래 정보를 저장하는 원장과 거래 실행 결과에 따른 상태정보를 저장하는 상태저장소로 구성되는 블록체인을 유지 -Ordering Service Node로부터 블록형태로 거래와 상태정보를 수신 -일부 피어만이 Endorsing Node역할을 수행 -Endorsing Node는 클라이언트의 보증 요청에 따라 체킨코드를 실행하고, 결과를 보증함 -보증 노드와 보증 방법은 해장 체인코드와 연계된 보증 정책에 의해 결정됨 <b>Ordering Service Node</b> -합의 알고리즘에 따라 클라이언트노드로부터 제안되는 거래들을 블록에 저장시키기 위해 순서대로 정렬시킴 -클라이언트에게 채널을 통해 받은 tx를 정렬후, 모든 피어에게 전달 <b>MSP(Membership Service Provider)</b> -네트워크에 접속하는 노드의 신원을 확인후, 그에 맞는 자격을 발급 -PKI(Public Key Infrastructure)기반의 인증기관(CA)를 통해 서비스에 맞는 개인키를 발급 MSP나 PKI에 대해서는 다룰게 더 많아요... 아래서 따로 다루겠습니다 여기까지만 봐도 용어가 굉장히 어렵죠.... 사진한장 보시면 이해가 좀더 쉬울거라 생각되요! 각 노드에 대한 동작방식에 대해서 https://hyperledger-fabric.readthedocs.io/en/release-1.2/network/network.html 이곳에서 굉장히 자세하게 설명해주고있습니다! 용어를 익히신후 가서 보시면 동작방식, 각 노드들및 채널들에 대한 이해하기에 훨씬 도움이 될거예요 <hr/> <b>거래의 처리방식</b> Excute->Order->Validate&Commit -실행후 실행결과과 포함된 거래를 포스팅 -동일한 순서대로 저장될 수 있도록 Ordering작업 -Orderer에 의해 순서가 정해지면, 각 피어에게 전파후 피어들이 실행 결과를 검증 -피어들이 결과를 검증후 타당한 거래내역이라면 블록에 저장 이런식으로 검증과정을 거친후 블록에 저장되는 구조입니다. 제가썼는데도 뭔가 어렵게 설명 드린거 같아요.. 더 쉽게 순서대로 설명드릴게요! 1) 클라이언트가 Tx를 발생 2) Endorsing node가 클라이언트로부터 Tx를 전달받아 실행후 클라이언트로 결과를 전달 3) 클라이언트는 전달받은 결과를 Ordering Service Node에게 전달 4) Ordering Service Node는 각 클라이언트에게 전달받은 Tx를 순서화및 검증후 예비 블록을 생성 5) Ordering Service Node는 생성한 예비블록을 Committing Peer Node에게 전달 6) Committing Peer Node는 전달받은 예비블록을 검증후, 타당하다면 블록에 저장! 좀더 쉽게 썼는데 이해가 되시려나요..... 어렵죠... 저도알아요 ㅋㅋㅋㅋ 저도 어렵게 공부했어요 ㅠ Hyperledger에 대해서는 정말 할이야기가 많고 공부할 내용도 정말 많아요. 제가 설명드린 내용들은 블록체인을 공부하시는 분이라면 기본적으로 알고가야 하는 내용들이고, 정말로 Hyperledger에 관심이 생겨서 더 알고싶으신분들은 IBM 사이트인 https://hyperledger-fabric.readthedocs.io 에 들어가셔서 쭉 따라서 해보시길 권장드릴게요! 어려운내용 주저리주저리 설명드렸는데 마지막까지 따라와주셔서 제가 감사드립니다... 다음시간에는 Hyperledger Composer 실습을 해볼예정입니다. Hyperledger Fabric 실습이 먼저인지는 알지만 제 노트북에서 준비해야할게좀 있어서 다음에 실습하도록 할게요! 감사합니다! |
| json metadata | {"tags":["blockcahin","hyperledger","ethereum","fabric","composer"],"image":["https://cdn.steemitimages.com/DQmYUYgQF9Ac2pC2cDUN626ZmtquCfTPcgubTG2pTWw1W47/image.png"],"links":["https://hyperledger-fabric.readthedocs.io/en/release-1.2/network/network.html","https://hyperledger-fabric.readthedocs.io"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockcahin |
| permlink | 2-hyperledger-fabric |
| title | 하이퍼레져란 무엇인가!?(2. Hyperledger Fabric) |
| Transaction Info | Block #29041345/Trx ab0f9bdbede71ca7734914fff967a01dd71d8e08 |
View Raw JSON Data
{
"block": 29041345,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!\n\n이어서 바로 하이퍼레져 패브릭에 대해서 포스팅하려고합니다 ㅎㅎ\n\n어려워요.. 저는 개념잡기가 조금 어려웠어요.. 새로운, 낯선 용어에 적응하는데 조금 시간이 걸렸답니다\n\n\n\nhttps://cdn.steemitimages.com/DQmYUYgQF9Ac2pC2cDUN626ZmtquCfTPcgubTG2pTWw1W47/image.png\n\n\n하이퍼 레져의 특징\n\n1. 허가형 블록체인 (허가된 사용자만 사용가능, 각각 기관및 피어에 대해 권한 설정 가능)\n-멤버십 관리 서비스를 통해 허가된 참여자만 접근 가능\n-참여자의 블록체인네트워크에 대한 권한을 설정 가능\n-참여자의 어떤 행위에 대한 책임소재가 분명함\n-높은 거래 완료성(거래가 승인이 완료되는 즉시 거래가 완료됨,블록을 생성함에있어 시간이 걸리지않음)\n\n2. 일반 프로그래밍 언어 사용\n-체인코드=>하이퍼레져의 Smart Contract \n-Go,nodejs사용\n\n3. 내부 가상통화 부재(가상화폐가 필요없음, 필요에따라 구축가능)\n-허가된 사용자만 네트워크에 접근 가능 하기때문, Dos공격및 수수료에 대한 고려 할필요가 없음\n\n4. 높은 성능(쓸모없이 채굴같은 자원소모가 없음)\n\n5. 멀티 블록체인 지원\n-전체 시스템을 다수의 채널로 구분(각 기관은 한개 혹은 다수의 채널에 가입 가능)\n-채널별로 독립적인 블록체인 유지 가능\n\n\n<hr/>\n\n그리고 하이퍼레져에서는 노드에 대해서도 이해하고 있어야합니다\n크게 클라이언트노드, 피어노드, 오더러노드, MSP(Membership Service Procider) 네가지가 있어요!\n각각에 대해서 설명 드릴게요 ㅎ\n\n\n<b>클라이언트 노드(Client Node)</b>\n-사용자를 대신하여 거래를 생성하고, 체인코드 실행을 호출하는 노드\n-클라이언트 노드는 거래를 생성해 endorsing node에게 제출함으로써 거래의 보증을 확인받음\n\n<b>피어노드(Peer Node) & Endorsing Node</b>\n-피어노드는 거래를 확정하는 역할\n-거래 정보를 저장하는 원장과 거래 실행 결과에 따른 상태정보를 저장하는 상태저장소로 구성되는 \n블록체인을 유지\n-Ordering Service Node로부터 블록형태로 거래와 상태정보를 수신\n-일부 피어만이 Endorsing Node역할을 수행\n-Endorsing Node는 클라이언트의 보증 요청에 따라 체킨코드를 실행하고, 결과를 보증함\n-보증 노드와 보증 방법은 해장 체인코드와 연계된 보증 정책에 의해 결정됨\n\n<b>Ordering Service Node</b>\n-합의 알고리즘에 따라 클라이언트노드로부터 제안되는 거래들을 블록에 저장시키기 위해 순서대로 정렬시킴\n-클라이언트에게 채널을 통해 받은 tx를 정렬후, 모든 피어에게 전달\n\n<b>MSP(Membership Service Provider)</b>\n-네트워크에 접속하는 노드의 신원을 확인후, 그에 맞는 자격을 발급\n-PKI(Public Key Infrastructure)기반의 인증기관(CA)를 통해 서비스에 맞는 개인키를 발급\n\nMSP나 PKI에 대해서는 다룰게 더 많아요... 아래서 따로 다루겠습니다\n\n여기까지만 봐도 용어가 굉장히 어렵죠....\n사진한장 보시면 이해가 좀더 쉬울거라 생각되요!\n\n각 노드에 대한 동작방식에 대해서\n https://hyperledger-fabric.readthedocs.io/en/release-1.2/network/network.html\n이곳에서 굉장히 자세하게 설명해주고있습니다! \n용어를 익히신후 가서 보시면 동작방식, 각 노드들및 채널들에 대한 이해하기에 훨씬 도움이 될거예요\n\n\n<hr/>\n<b>거래의 처리방식</b>\n\nExcute->Order->Validate&Commit\n-실행후 실행결과과 포함된 거래를 포스팅\n-동일한 순서대로 저장될 수 있도록 Ordering작업\n-Orderer에 의해 순서가 정해지면, 각 피어에게 전파후 피어들이 실행 결과를 검증\n-피어들이 결과를 검증후 타당한 거래내역이라면 블록에 저장\n\n이런식으로 검증과정을 거친후 블록에 저장되는 구조입니다. 제가썼는데도 뭔가 어렵게 설명 드린거 같아요..\n\n더 쉽게 순서대로 설명드릴게요!\n1) 클라이언트가 Tx를 발생\n2) Endorsing node가 클라이언트로부터 Tx를 전달받아 실행후 클라이언트로 결과를 전달\n3) 클라이언트는 전달받은 결과를 Ordering Service Node에게 전달\n4) Ordering Service Node는 각 클라이언트에게 전달받은 Tx를 순서화및 검증후 예비 블록을 생성\n5) Ordering Service Node는 생성한 예비블록을 Committing Peer Node에게 전달\n6) Committing Peer Node는 전달받은 예비블록을 검증후, 타당하다면 블록에 저장!\n\n좀더 쉽게 썼는데 이해가 되시려나요..... 어렵죠... 저도알아요 ㅋㅋㅋㅋ 저도 어렵게 공부했어요 ㅠ\n\nHyperledger에 대해서는 정말 할이야기가 많고 공부할 내용도 정말 많아요.\n\n제가 설명드린 내용들은 블록체인을 공부하시는 분이라면 기본적으로 알고가야 하는 내용들이고,\n정말로 Hyperledger에 관심이 생겨서 더 알고싶으신분들은 IBM 사이트인 https://hyperledger-fabric.readthedocs.io\n에 들어가셔서 쭉 따라서 해보시길 권장드릴게요!\n\n어려운내용 주저리주저리 설명드렸는데 마지막까지 따라와주셔서 제가 감사드립니다...\n\n다음시간에는 Hyperledger Composer 실습을 해볼예정입니다.\n\nHyperledger Fabric 실습이 먼저인지는 알지만 제 노트북에서 준비해야할게좀 있어서 다음에 실습하도록 할게요!\n\n감사합니다!",
"json_metadata": "{\"tags\":[\"blockcahin\",\"hyperledger\",\"ethereum\",\"fabric\",\"composer\"],\"image\":[\"https://cdn.steemitimages.com/DQmYUYgQF9Ac2pC2cDUN626ZmtquCfTPcgubTG2pTWw1W47/image.png\"],\"links\":[\"https://hyperledger-fabric.readthedocs.io/en/release-1.2/network/network.html\",\"https://hyperledger-fabric.readthedocs.io\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockcahin",
"permlink": "2-hyperledger-fabric",
"title": "하이퍼레져란 무엇인가!?(2. Hyperledger Fabric)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-31T09:06:57",
"trx_id": "ab0f9bdbede71ca7734914fff967a01dd71d8e08",
"trx_in_block": 6,
"virtual_op": 0
}2018/12/31 08:14:45
2018/12/31 08:14:45
| author | minhokim |
| body | 안녕하세요! 요즘 이더리움 네트워크를 활용한 Dapp개발을 주로 포스팅했었는데요 오늘은 하이퍼레져대해서 포스팅을 해볼까합니다! 블록체인분야에 공부를 해보신분이라면 한번쯤은 하이퍼레져가 무엇인지 들어 보셨을거라고 생각하는데요! 물론 하이퍼레져에 대해 접하지 못하신분도 있을거 같아서!! 제가 오늘 간단하게 Private Blockchain이자 하이퍼레져가 무엇인지에 대해서 포스팅하려합니다 ㅎㅎ 하이퍼레져를 처음 접하시는분들이 가장 어려움을 느끼는 부분이 용어부분이죠 그래도 포기하지 마시고 잘 따라와 주셨으면 합니다!! <hr/> 블록체인을 접하실때 퍼블릭블록체인, 프라이빗블록체인, 컨소시움 블록체인 이렇게 들어보셨을거예요. 퍼블릭 블록체인이란것은 저희가 흔히 알고있는 비트코인,이더리움,이오스 등등 같은 블록체인을 말하는다는 것은 모든분들이 알고계시겠죠. 하지만 프라이빗이나, 컨소시움은 들어는 봤는데 그게뭐지? 하는 분들이 있으실건데 바로 이 하이퍼레져가 바로 프라이빗,컨소시움 블록체인이라고 불려지는 것들입니다!. 보시는 그림과 같이 하이퍼 레져는 종류도 여러가지고 툴도 여러가지가 있어요! https://cdn.steemitimages.com/DQmajyWyo1edRqipwtRA5hzXt1FEAzTTs6LXGK9yfXFNjLA/image.png 기업들이 퍼블릭 블록체인을 쓰기 꺼려하는 이유중 대표적인것들이 1. 높은 수수료 2. 낮은 트랜잭셕 속도및 처리량 3. 권한에대한 관리 4. 자사의 프로젝트에대한 기밀성 가장 대표적이기 때문에 하이퍼레져같은 프라이빗 블록체인을 도입하려는 기업들이 많아지고있어요! 하이퍼레져같은 프라이빗 블록체인의 가장 큰 장점이라 하면 1. 허가를 받은 사람만 블록체인 네트워크에 참여할수있기때문에 기밀성 유지! 2. 운영과 참여의 주체가 명확하기 때문에 코인의 발행이 필요가없음 3. 각각 참여자에 대한 권한 부여가능 4. 신뢰할수 있는 사람만이 참여하기때문에 트랜잭션의 속도가 빠름 이러한 장점때문에 은행에서 이러한 하이퍼레져 도입을 하고있는 중이라고 기사를 본적이 있어요! 프라이빗블록체인에서도 Fully Private Blockchain, Consortium Blockchain 두가지로 나눌수가 있어요 <b><h2>Fully Private Blockchain</h2></b> https://cdn.steemitimages.com/DQmd2yi5cHR74EPqG1cdPosvRNrVT8ahAQmUTHGJdQzfywM/image.png -하나의 기관이나 기업 아래서 사용 -데이터 관리과 검증, 거래내역에 접근하기가 쉽고 중앙기관이 존재 -블록체인 기술을 사용하지만, 중앙기관이 존재함으로 그저 분산된 데이터 베이스구조 -현재 시스템에 블록체인의 보안 검증성의 특징만 적용 중앙기관이 존재하는 블록체인이라.... 약간 블록체인이라고 칭하기 민망하지만 그래도.. 블록체인이긴 블록체인 이랍니다..ㅎㅎ <b><h2>Consortium Blockchain</h2></b> https://cdn.steemitimages.com/DQmebNe9zPSws33xDkAi712e9XP4Wm4VMjW3W1Z2Qb34P4N/image.png -여러 기관 또는 기업이 하나의 그룹을 이뤄 블록체인 네트워크를 구성 -퍼블릭+프라이빗 블록체인의 성격모두 적용 -각 노드에 특정 권한및 역할을 부여할수있음 바로 컨소시움 블록체인이 하이퍼레져가 추구하는 블록체인의 모델상이라고 보는게 제 주관적인 생각 입니다! <hr/> 이번 시간에는 간단히 Private Blockchain이 있다~ 라는 정도로 진행하였습니다. 다음시간에는 정말로 하이퍼레져 패브릭에 대한 이야기를 다루도록 할게요! 부족하지만 오늘도 방문해주셔서 감사합니다 |
| json metadata | {"tags":["blockchain","hyperledger","privateblockchain"],"image":["https://cdn.steemitimages.com/DQmajyWyo1edRqipwtRA5hzXt1FEAzTTs6LXGK9yfXFNjLA/image.png","https://cdn.steemitimages.com/DQmd2yi5cHR74EPqG1cdPosvRNrVT8ahAQmUTHGJdQzfywM/image.png","https://cdn.steemitimages.com/DQmebNe9zPSws33xDkAi712e9XP4Wm4VMjW3W1Z2Qb34P4N/image.png"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 1 |
| title | 하이퍼레져란 무엇인가!?(1. 프라이빗 블록체인) |
| Transaction Info | Block #29040302/Trx 0577b755b294075fe1761029411b1be287cdd7d2 |
View Raw JSON Data
{
"block": 29040302,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!\n\n요즘 이더리움 네트워크를 활용한 Dapp개발을 주로 포스팅했었는데요\n\n오늘은 하이퍼레져대해서 포스팅을 해볼까합니다!\n\n\n블록체인분야에 공부를 해보신분이라면 한번쯤은 하이퍼레져가 무엇인지 들어 보셨을거라고 생각하는데요!\n\n물론 하이퍼레져에 대해 접하지 못하신분도 있을거 같아서!! 제가 오늘 간단하게 Private Blockchain이자 하이퍼레져가 무엇인지에 대해서 포스팅하려합니다 ㅎㅎ\n\n\n하이퍼레져를 처음 접하시는분들이 가장 어려움을 느끼는 부분이 용어부분이죠 \n\n그래도 포기하지 마시고 잘 따라와 주셨으면 합니다!!\n\n<hr/>\n\n블록체인을 접하실때 퍼블릭블록체인, 프라이빗블록체인, 컨소시움 블록체인 이렇게 들어보셨을거예요.\n\n퍼블릭 블록체인이란것은 저희가 흔히 알고있는 비트코인,이더리움,이오스 등등 같은 블록체인을 말하는다는 것은\n\n모든분들이 알고계시겠죠.\n\n하지만 프라이빗이나, 컨소시움은 들어는 봤는데 그게뭐지? 하는 분들이 있으실건데 바로 이 하이퍼레져가\n\n바로 프라이빗,컨소시움 블록체인이라고 불려지는 것들입니다!.\n\n\n보시는 그림과 같이 하이퍼 레져는 종류도 여러가지고 툴도 여러가지가 있어요!\n\n\nhttps://cdn.steemitimages.com/DQmajyWyo1edRqipwtRA5hzXt1FEAzTTs6LXGK9yfXFNjLA/image.png\n\n\n\n\n기업들이 퍼블릭 블록체인을 쓰기 꺼려하는 이유중 대표적인것들이\n\n1. 높은 수수료\n2. 낮은 트랜잭셕 속도및 처리량\n3. 권한에대한 관리\n4. 자사의 프로젝트에대한 기밀성\n\n가장 대표적이기 때문에 하이퍼레져같은 프라이빗 블록체인을 도입하려는 기업들이 많아지고있어요!\n\n\n하이퍼레져같은 프라이빗 블록체인의 가장 큰 장점이라 하면\n1. 허가를 받은 사람만 블록체인 네트워크에 참여할수있기때문에 기밀성 유지!\n2. 운영과 참여의 주체가 명확하기 때문에 코인의 발행이 필요가없음\n3. 각각 참여자에 대한 권한 부여가능\n4. 신뢰할수 있는 사람만이 참여하기때문에 트랜잭션의 속도가 빠름\n\n이러한 장점때문에 은행에서 이러한 하이퍼레져 도입을 하고있는 중이라고 기사를 본적이 있어요!\n\n\n\n프라이빗블록체인에서도 Fully Private Blockchain, Consortium Blockchain 두가지로 나눌수가 있어요\n\n\n<b><h2>Fully Private Blockchain</h2></b>\nhttps://cdn.steemitimages.com/DQmd2yi5cHR74EPqG1cdPosvRNrVT8ahAQmUTHGJdQzfywM/image.png\n\n-하나의 기관이나 기업 아래서 사용\n-데이터 관리과 검증, 거래내역에 접근하기가 쉽고 중앙기관이 존재\n-블록체인 기술을 사용하지만, 중앙기관이 존재함으로 그저 분산된 데이터 베이스구조\n-현재 시스템에 블록체인의 보안 검증성의 특징만 적용\n\n중앙기관이 존재하는 블록체인이라.... 약간 블록체인이라고 칭하기 민망하지만 그래도.. 블록체인이긴 블록체인 이랍니다..ㅎㅎ\n\n<b><h2>Consortium Blockchain</h2></b>\nhttps://cdn.steemitimages.com/DQmebNe9zPSws33xDkAi712e9XP4Wm4VMjW3W1Z2Qb34P4N/image.png\n\n-여러 기관 또는 기업이 하나의 그룹을 이뤄 블록체인 네트워크를 구성\n-퍼블릭+프라이빗 블록체인의 성격모두 적용\n-각 노드에 특정 권한및 역할을 부여할수있음\n\n바로 컨소시움 블록체인이 하이퍼레져가 추구하는 블록체인의 모델상이라고 보는게 제 주관적인 생각 입니다!\n\n\n<hr/>\n\n이번 시간에는 간단히 Private Blockchain이 있다~ 라는 정도로 진행하였습니다.\n\n다음시간에는 정말로 하이퍼레져 패브릭에 대한 이야기를 다루도록 할게요!\n\n부족하지만 오늘도 방문해주셔서 감사합니다",
"json_metadata": "{\"tags\":[\"blockchain\",\"hyperledger\",\"privateblockchain\"],\"image\":[\"https://cdn.steemitimages.com/DQmajyWyo1edRqipwtRA5hzXt1FEAzTTs6LXGK9yfXFNjLA/image.png\",\"https://cdn.steemitimages.com/DQmd2yi5cHR74EPqG1cdPosvRNrVT8ahAQmUTHGJdQzfywM/image.png\",\"https://cdn.steemitimages.com/DQmebNe9zPSws33xDkAi712e9XP4Wm4VMjW3W1Z2Qb34P4N/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "1",
"title": "하이퍼레져란 무엇인가!?(1. 프라이빗 블록체인)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-31T08:14:45",
"trx_id": "0577b755b294075fe1761029411b1be287cdd7d2",
"trx_in_block": 4,
"virtual_op": 0
}devsupupvoted (0.69%) @minhokim / react-dapp-2-32018/12/25 09:40:18
devsupupvoted (0.69%) @minhokim / react-dapp-2-3
2018/12/25 09:40:18
| author | minhokim |
| permlink | react-dapp-2-3 |
| voter | devsup |
| weight | 69 (0.69%) |
| Transaction Info | Block #28869290/Trx 2acde58e0da373a841777bd810bca319949cd909 |
View Raw JSON Data
{
"block": 28869290,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-3",
"voter": "devsup",
"weight": 69
}
],
"op_in_trx": 0,
"timestamp": "2018-12-25T09:40:18",
"trx_id": "2acde58e0da373a841777bd810bca319949cd909",
"trx_in_block": 21,
"virtual_op": 0
}kyndyzupvoted (100.00%) @minhokim / react-dapp-2-32018/12/25 09:29:27
kyndyzupvoted (100.00%) @minhokim / react-dapp-2-3
2018/12/25 09:29:27
| author | minhokim |
| permlink | react-dapp-2-3 |
| voter | kyndyz |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28869074/Trx 24928dd17c6f0446a57a733fc86c8d63cd9ed5e1 |
View Raw JSON Data
{
"block": 28869074,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-3",
"voter": "kyndyz",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-25T09:29:27",
"trx_id": "24928dd17c6f0446a57a733fc86c8d63cd9ed5e1",
"trx_in_block": 15,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / react-dapp-2-32018/12/25 09:25:30
minhokimupvoted (100.00%) @minhokim / react-dapp-2-3
2018/12/25 09:25:30
| author | minhokim |
| permlink | react-dapp-2-3 |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28868995/Trx 4640ed173689e2337f071871633d6eea5a48bbba |
View Raw JSON Data
{
"block": 28868995,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-3",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-25T09:25:30",
"trx_id": "4640ed173689e2337f071871633d6eea5a48bbba",
"trx_in_block": 10,
"virtual_op": 0
}minhokimpublished a new post: react-dapp-2-32018/12/25 09:25:21
minhokimpublished a new post: react-dapp-2-3
2018/12/25 09:25:21
| author | minhokim |
| body | 안녕하세요! 어제 Private Ethereum Network에 연동까지해서 블록에저장, 호출까지 하려했는데.. 개인 사정때매 끝까지 못했네요 그래서 오늘 나머지 진행하려 합니다!! 어제에 이어서 바로 시작하겠습니다! <hr/> 저희가 ipfs서버에 파일을 저장하고, 해시값을 가져오고, 화면에 출력하는 단계까지 진행을 하였습니다. 이제는 블록에 저장하고, 호출하는 코드를 작성해볼게요! 어제 스마트 컨트랙트부분을 솔리리티로 작성하고 컴파일까지 했었죠? 컴파일이 완료되면 build/contracts폴더안에 FileHash.json이라는 파일이 생성됐을거예요 이파일과, src/utils안에있는 getweb3파일을 저희 FileHash.js파일에 import시키겠습니다! https://cdn.steemitimages.com/DQmPQXqj7gLDVM3MJ8b4Fs4NcMu6z53V8NDZzVUQAHNtkRv/image.png 그후에 새로운 state변수 account와 web3 도 선언해줄게요! account state변수에는 현재 트랜잭션을 일으키는 이더리움 계좌를 저장할거구, web3 변수에는 현재 사용할 web3를 저장할거예요! web3란것은 간단히 말해서 JSON RPC를 호출하게 해주는 라이브러리입니다! 이더리움기반으로 Dapp 프로젝트를 진행함에 있어서 굉장히 편하게 이벤트처리나 리턴값 호출을 다룰수 있게되요! 조금더 web3에 대해 자세히 알고싶은 분을 위해 제가 참고했던 블로그 주소를 첨부드릴게요! http://goodjoon.tistory.com/260 good joon's님의 블로그인데 저도 이분 글을 읽고 web3에 대해서 개념이 생겼습니다!! 다음으로 현재 사용중인 web3를 불러와 저장시키는 코드입니다! https://cdn.steemitimages.com/DQmcdFKAqipQdS4mqrCd34pkkkPAK3kA2puUEGbZvzDnkcC/image.png utils/getweb3를 보시면 web3를 호출하는 것에 대한 코드가 되어져있어요! 다음으로 저희가 작성한 스마트 컨트랙트를 호출하고, 계정정보를 가져오고, 컨트랙트내에 함수를 사용하는 function을 만들겠습니다! https://cdn.steemitimages.com/DQmYJgRkScxJFYt1cuVYCZPYha2sZt7TgAQZAUbLJ4M4uv1/image.png 전에 작성햇던 콜라 구매하고 판매하기 Dapp이랑 굉장히 유사하죠?? 저희가 만드는것처럼 기본적인 프로젝트에서는 거의다 비슷비슷하게 사용을 하니까 , 절대 어려움 갖지 않으셔도됩니다! 컨트랙스 인스턴스화시키고 젖, 계정정보저장및, ipfsHash값을 가져오게 할거예요! 이제 마지막으로 파일을 업로드하고 버튼을 눌렀을때, 그 hash값이 블록에 저장되는 코드를 작성해볼게요! 전에 작성했던 onSubmit함수에 작성을 할거예요! https://cdn.steemitimages.com/DQmYPepoQR3bzHu2sU3spG2L9H6fYBgdQKr7bhc15s1U3Kx/image.png 빨간색 포인트 되어져 있는 부분만 작성하시면 됩니다! ipfs서버에 파일을 올리고, result로 해시값을 받아오는데 그값을 블록에 저장하는 코드입니다! 이제 잘되나 테스트를 해볼까요? 가나슈를 열어주시고 콘솔창에서 새로 컴파일을 진행합시다! 그리고 스타트!!를 햇는데 set이 define되지 않았다고 에러가 나네요 ㅋㅋㅋㅋ 위에서 만든 instantiateContract() 함수 기억나시나요? 이곳에서 저희가 만든 컨트랙트를 관리하는데, 이 함수 호출을 아무데서도 안시켜서 나는 에러입니다... 컨트랙트 내에 set함수는 물론 get함수까지도 못불러오는 사태인거죠! https://cdn.steemitimages.com/DQmeWNuXAUGNHzWrM56BMF8RNgQBn9HrxbqttDEg19HLF9o/image.png 이부분에 추가해주시면 정상적으로 작동할거예요! https://cdn.steemitimages.com/DQmSe7eLRcJmitAUQCzz3zzQJctz882qAgEiHgXXhUvmUct/image.png 가스비를 지불하고 트랜잭션을 실행하면! 가나슈에서 블록이 생성된걸 볼수가 있습니다 ㅎㅎ https://cdn.steemitimages.com/DQmWnzpPLUeUcVaV6qwSioeuC8A43nutbFMJBWaz7cWp2Uq/image.png 오늘 배운걸 많이 활용하면 여기저기 써먹을데가 많으니 안 잊어버리셨으면 합니다! 다음시간에는 더 좋은 자료로 찾아올게요! 감사합니다 |
| json metadata | {"tags":["blockchain","react","dapp","ethereum","ipfs"],"image":["https://cdn.steemitimages.com/DQmPQXqj7gLDVM3MJ8b4Fs4NcMu6z53V8NDZzVUQAHNtkRv/image.png","https://cdn.steemitimages.com/DQmcdFKAqipQdS4mqrCd34pkkkPAK3kA2puUEGbZvzDnkcC/image.png","https://cdn.steemitimages.com/DQmYJgRkScxJFYt1cuVYCZPYha2sZt7TgAQZAUbLJ4M4uv1/image.png","https://cdn.steemitimages.com/DQmYPepoQR3bzHu2sU3spG2L9H6fYBgdQKr7bhc15s1U3Kx/image.png","https://cdn.steemitimages.com/DQmeWNuXAUGNHzWrM56BMF8RNgQBn9HrxbqttDEg19HLF9o/image.png","https://cdn.steemitimages.com/DQmSe7eLRcJmitAUQCzz3zzQJctz882qAgEiHgXXhUvmUct/image.png","https://cdn.steemitimages.com/DQmWnzpPLUeUcVaV6qwSioeuC8A43nutbFMJBWaz7cWp2Uq/image.png"],"links":["http://goodjoon.tistory.com/260"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | react-dapp-2-3 |
| title | react를 활용한 Dapp 2탄입니다!! (3.블록체인 네트워크 연결) |
| Transaction Info | Block #28868992/Trx 913be7eef775b9954902852266350dfad5ff62ce |
View Raw JSON Data
{
"block": 28868992,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!\n\n어제 Private Ethereum Network에 연동까지해서 블록에저장, 호출까지 하려했는데.. 개인 사정때매 끝까지 못했네요\n\n그래서 오늘 나머지 진행하려 합니다!!\n\n어제에 이어서 바로 시작하겠습니다!\n\n<hr/>\n\n저희가 ipfs서버에 파일을 저장하고, 해시값을 가져오고, 화면에 출력하는 단계까지 진행을 하였습니다.\n\n이제는 블록에 저장하고, 호출하는 코드를 작성해볼게요!\n\n\n\n어제 스마트 컨트랙트부분을 솔리리티로 작성하고 컴파일까지 했었죠?\n\n컴파일이 완료되면 build/contracts폴더안에 FileHash.json이라는 파일이 생성됐을거예요\n\n이파일과, src/utils안에있는 getweb3파일을 저희 FileHash.js파일에 import시키겠습니다!\n\n\nhttps://cdn.steemitimages.com/DQmPQXqj7gLDVM3MJ8b4Fs4NcMu6z53V8NDZzVUQAHNtkRv/image.png\n\n그후에 새로운 state변수 account와 web3 도 선언해줄게요!\n\naccount state변수에는 현재 트랜잭션을 일으키는 이더리움 계좌를 저장할거구,\nweb3 변수에는 현재 사용할 web3를 저장할거예요!\n\nweb3란것은 간단히 말해서 JSON RPC를 호출하게 해주는 라이브러리입니다!\n\n이더리움기반으로 Dapp 프로젝트를 진행함에 있어서 굉장히 편하게 이벤트처리나 리턴값 호출을 다룰수 있게되요!\n\n조금더 web3에 대해 자세히 알고싶은 분을 위해 제가 참고했던 블로그 주소를 첨부드릴게요!\n\nhttp://goodjoon.tistory.com/260 \ngood joon's님의 블로그인데 저도 이분 글을 읽고 web3에 대해서 개념이 생겼습니다!!\n\n\n다음으로 현재 사용중인 web3를 불러와 저장시키는 코드입니다!\n\nhttps://cdn.steemitimages.com/DQmcdFKAqipQdS4mqrCd34pkkkPAK3kA2puUEGbZvzDnkcC/image.png\n\nutils/getweb3를 보시면 web3를 호출하는 것에 대한 코드가 되어져있어요!\n\n\n다음으로 저희가 작성한 스마트 컨트랙트를 호출하고, 계정정보를 가져오고, 컨트랙트내에 함수를 사용하는\n\nfunction을 만들겠습니다!\n\n\nhttps://cdn.steemitimages.com/DQmYJgRkScxJFYt1cuVYCZPYha2sZt7TgAQZAUbLJ4M4uv1/image.png\n\n전에 작성햇던 콜라 구매하고 판매하기 Dapp이랑 굉장히 유사하죠??\n\n저희가 만드는것처럼 기본적인 프로젝트에서는 거의다 비슷비슷하게 사용을 하니까 , 절대 어려움 갖지 않으셔도됩니다!\n\n컨트랙스 인스턴스화시키고 젖, 계정정보저장및, ipfsHash값을 가져오게 할거예요!\n\n이제 마지막으로 파일을 업로드하고 버튼을 눌렀을때, 그 hash값이 블록에 저장되는 코드를 작성해볼게요!\n\n전에 작성했던 onSubmit함수에 작성을 할거예요!\n\nhttps://cdn.steemitimages.com/DQmYPepoQR3bzHu2sU3spG2L9H6fYBgdQKr7bhc15s1U3Kx/image.png\n\n빨간색 포인트 되어져 있는 부분만 작성하시면 됩니다!\n \nipfs서버에 파일을 올리고, result로 해시값을 받아오는데 그값을 블록에 저장하는 코드입니다!\n\n\n이제 잘되나 테스트를 해볼까요?\n\n가나슈를 열어주시고 콘솔창에서 새로 컴파일을 진행합시다!\n\n그리고 스타트!!를 햇는데 set이 define되지 않았다고 에러가 나네요 ㅋㅋㅋㅋ\n\n위에서 만든 instantiateContract() 함수 기억나시나요?\n\n이곳에서 저희가 만든 컨트랙트를 관리하는데, 이 함수 호출을 아무데서도 안시켜서 나는 에러입니다...\n\n컨트랙트 내에 set함수는 물론 get함수까지도 못불러오는 사태인거죠!\n\nhttps://cdn.steemitimages.com/DQmeWNuXAUGNHzWrM56BMF8RNgQBn9HrxbqttDEg19HLF9o/image.png\n\n이부분에 추가해주시면 정상적으로 작동할거예요!\n\n\nhttps://cdn.steemitimages.com/DQmSe7eLRcJmitAUQCzz3zzQJctz882qAgEiHgXXhUvmUct/image.png\n\n가스비를 지불하고 트랜잭션을 실행하면!\n가나슈에서 블록이 생성된걸 볼수가 있습니다 ㅎㅎ\n\nhttps://cdn.steemitimages.com/DQmWnzpPLUeUcVaV6qwSioeuC8A43nutbFMJBWaz7cWp2Uq/image.png\n\n오늘 배운걸 많이 활용하면 여기저기 써먹을데가 많으니 안 잊어버리셨으면 합니다!\n\n다음시간에는 더 좋은 자료로 찾아올게요! 감사합니다",
"json_metadata": "{\"tags\":[\"blockchain\",\"react\",\"dapp\",\"ethereum\",\"ipfs\"],\"image\":[\"https://cdn.steemitimages.com/DQmPQXqj7gLDVM3MJ8b4Fs4NcMu6z53V8NDZzVUQAHNtkRv/image.png\",\"https://cdn.steemitimages.com/DQmcdFKAqipQdS4mqrCd34pkkkPAK3kA2puUEGbZvzDnkcC/image.png\",\"https://cdn.steemitimages.com/DQmYJgRkScxJFYt1cuVYCZPYha2sZt7TgAQZAUbLJ4M4uv1/image.png\",\"https://cdn.steemitimages.com/DQmYPepoQR3bzHu2sU3spG2L9H6fYBgdQKr7bhc15s1U3Kx/image.png\",\"https://cdn.steemitimages.com/DQmeWNuXAUGNHzWrM56BMF8RNgQBn9HrxbqttDEg19HLF9o/image.png\",\"https://cdn.steemitimages.com/DQmSe7eLRcJmitAUQCzz3zzQJctz882qAgEiHgXXhUvmUct/image.png\",\"https://cdn.steemitimages.com/DQmWnzpPLUeUcVaV6qwSioeuC8A43nutbFMJBWaz7cWp2Uq/image.png\"],\"links\":[\"http://goodjoon.tistory.com/260\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "react-dapp-2-3",
"title": "react를 활용한 Dapp 2탄입니다!! (3.블록체인 네트워크 연결)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-25T09:25:21",
"trx_id": "913be7eef775b9954902852266350dfad5ff62ce",
"trx_in_block": 39,
"virtual_op": 0
}magpieloverupvoted (100.00%) @minhokim / react-dapp-2-22018/12/24 19:31:57
magpieloverupvoted (100.00%) @minhokim / react-dapp-2-2
2018/12/24 19:31:57
| author | minhokim |
| permlink | react-dapp-2-2 |
| voter | magpielover |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28852329/Trx 69848cfcfd5d32ad19d1445b76fc1937cd23b969 |
View Raw JSON Data
{
"block": 28852329,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-2",
"voter": "magpielover",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-24T19:31:57",
"trx_id": "69848cfcfd5d32ad19d1445b76fc1937cd23b969",
"trx_in_block": 9,
"virtual_op": 0
}acknowledgementupvoted (10.00%) @minhokim / react-dapp-2-22018/12/24 19:10:57
acknowledgementupvoted (10.00%) @minhokim / react-dapp-2-2
2018/12/24 19:10:57
| author | minhokim |
| permlink | react-dapp-2-2 |
| voter | acknowledgement |
| weight | 1000 (10.00%) |
| Transaction Info | Block #28851909/Trx 0356c5d1b17f6782d24d6b4e4f4afeb505bf7831 |
View Raw JSON Data
{
"block": 28851909,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-2",
"voter": "acknowledgement",
"weight": 1000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-24T19:10:57",
"trx_id": "0356c5d1b17f6782d24d6b4e4f4afeb505bf7831",
"trx_in_block": 9,
"virtual_op": 0
}minibotupvoted (5.00%) @minhokim / react-dapp-2-22018/12/24 18:53:33
minibotupvoted (5.00%) @minhokim / react-dapp-2-2
2018/12/24 18:53:33
| author | minhokim |
| permlink | react-dapp-2-2 |
| voter | minibot |
| weight | 500 (5.00%) |
| Transaction Info | Block #28851561/Trx a20d7bb3edcb9b067df76d1d2f9cdd8adabc1ed2 |
View Raw JSON Data
{
"block": 28851561,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-2",
"voter": "minibot",
"weight": 500
}
],
"op_in_trx": 0,
"timestamp": "2018-12-24T18:53:33",
"trx_id": "a20d7bb3edcb9b067df76d1d2f9cdd8adabc1ed2",
"trx_in_block": 2,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / react-dapp-2-22018/12/24 18:52:00
minhokimupvoted (100.00%) @minhokim / react-dapp-2-2
2018/12/24 18:52:00
| author | minhokim |
| permlink | react-dapp-2-2 |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28851530/Trx 386f039453a61e4969565ac8c8e42cc299ac2095 |
View Raw JSON Data
{
"block": 28851530,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-2",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-24T18:52:00",
"trx_id": "386f039453a61e4969565ac8c8e42cc299ac2095",
"trx_in_block": 11,
"virtual_op": 0
}minhokimpublished a new post: react-dapp-2-22018/12/24 18:51:51
minhokimpublished a new post: react-dapp-2-2
2018/12/24 18:51:51
| author | minhokim |
| body | 안녕하세요! 오늘도 저번시간에 이어서 ipfs에 대해서 말씀드리려 합니다 ㅎㅎ 제가 지금 사용하는 이 스팀잇에서 운영? 하는 Dtube라는 블록체인 플랫폼이 있습니다. 그 Dtube가 바로!! ipfs를 활용해서 동영상의 해시값을 블록에 저장을 하는 플랫폼인거죠 ㅎㅎㅎㅎ 유튜브랑 굉장히 유사하지만.... 유튜브와의 차이점은 데이터가 분산저장되고+블록에 저장이 되고 광고도없구.. 동영상의 조회수or 추천수 같은걸로 Dtube만의 특별한 알고리즘에 의해 보상이 지급되어지는 방식인거죠 <br/> <hr/> <br/> 오늘 저희는 간단히 ipfs를 활용한 블록에 데이터저장(정확이는 데이터의 해시값이죠..)을 저장 해보는 시간을 가지려 합니다! ipfs에 대한 개념이 많이 부족하신분은 따라하시기 어려울수가 있어요 ㅎㅎ 자 오늘 할 내용은 react를 활용해 ipfs에 데이터를 올리고 나온 해시값을 블록에 저장해보도록 하겠습니다. 오늘 프로젝트도 어김없이 truffle unbox react를 활용 할건데요, 이 프로젝트 다운받는 법은 콜라구매하고 판매하는 Dapp시간에 설명 드렸지만 까먹으신 분들을 위해 다시한번 설명 드리겠습니다. https://github.com/truffle-box/react-box에 들어가셔서 https://cdn.steemitimages.com/DQmRxfruqCxaKKn8XndPfiJrHSgJaGNJ4ZB52Um8CWnbqfm/image.png develop 모드로 다운받아주시면 됩니다. 그리고 나서 압축을 풀고 cmd나 powershell에서 npm install 을 해주면 개발환경 세팅은 끝! https://cdn.steemitimages.com/DQmYgn8enVagZpvrmkjjga1vB18PXBhFpncga6SPAwzjUBz/image.png 자 그럼이제 코딩을 해볼까유! https://cdn.steemitimages.com/DQmNkLFac96H4AkqXj3DDw3fe2PUPjsrhz3Ci1LnopWidWN/image.png 오늘도 가차없이 SimpleStorage.sol파일을 삭제해 주겠습니다. 그리고 contracts폴더에 새로 FileHash.sol 파일을 생성해주세요! https://cdn.steemitimages.com/DQmcznJFUK2gZ1x1TX78nzA8dQbjB2eSRp7cjwx8V32ZK8m/image.png 위 사진과 같이 코드를 작성해주세요! 정말 설명이 필요없는 간단한 코드죠?? set함수에서 ipfsHash라는 string 변수에 파일의 해시값을 저장하고, get함수에서 ipfsHash값을 불러옵니다 https://cdn.steemitimages.com/DQmVtTp75SySCVMggiKuworxqoK5GNT15njbjFxAexanQN1/image.png 이부분도 변경하는거 잊지 말아주세요! https://cdn.steemitimages.com/DQmVpyGsmNfRA18WvJqHXhYSdKokEWVxiiXTJGNSxjJ4hiA/image.png src 폴더안에 components폴더를 새로생성하고, 이안에 FileForm.js라는 컴포넌트를 하나 생성해주세요! 1. FileForm컨포넌트에서는 파일이 입력되면, ipfs에 저장이되고 해시값을 반환받습니다. 2. 반환받은 해시값을 블록에 저장하고, 저희 클라이언트 화면에 해시값을 출력합니다. 끝. 이제 FileForm.js안에 코드를 작성해 보겠습니다. 그전에 컨트랙트 컴파일부터 한번 해주고 시작할게요 truffle.js 파일 Private BlockChain Network 환경에 맞춰서 수정해야하는건 다들 기억하고 계실거라고 믿습니다!! https://cdn.steemitimages.com/DQmdWGAiwU4UftpLAZ8BirazRtZMrAi3zPkyim3pknFkSrz/image.png 컴파일 정상적으로 완료됐습니다! 벌써부터 오류가 나시는분은 없길 바라겠습니다 ㅠ 제일먼저 파일을 올리면 ipfs에 올라가도록 코딩을 진행 하겠습니다. 콘솔창에서 npm install ipfs-api --save로 ipfs-api 라는 모듈을 설치해주세요! ipfs를 사용하기위해 필수 모듈입니다 https://cdn.steemitimages.com/DQmNS7twzTdaTjueLM4ogk5VLp1xWmwUgN5XWC83i2KU7p7/image.png 방금 설치한 ipfs-api를 import해주시고, 프론트엔드 화면을 위와같이 작성해주시면 아주많이 조잡한... 화면이 구성이됩니다! https://cdn.steemitimages.com/DQmX5sfav8on8XP85Ao1AFwoCFzsmbVkVPC5HG4Y6TttxME/image.png state내에 buffer변수를 null로 선언해주세요! 그리고 capture라는 함수를 만들고 위와같이 코딩해주시면 되겠습니다. capture 함수는, 저희가 업로드한 파일에 대한 버퍼및 크기를 체크하고 저장하는 함수입니다. new window.fileReader()로써 생성한 FileReader객체를 reader에 담은후 readerAsArrayBuffer(file) 코드로 그파일에 대한 버퍼사이즈를 읽게 됩니다. 그후에 onloadend 이벤트가 발생되고, 그 결과값을 state내에 buffer변수에 저장하는 역할을 하는 함수입니다. https://cdn.steemitimages.com/DQmWE3tJPU45uReYkK7grz4DFZ7PrMmLGYGCMK2G2MeAy92/image.png 자 다음으로 파일을 업로드하게되면, 위와같이 콘솔창에 그파일에 대한 버퍼 배열이 쭈르르르르륵 나오면 현재까지는 오류없이 잘 하신겁니다!! https://cdn.steemitimages.com/DQmTqwAAzdoLLCGWorm6c2it6YuutJHCmoXRBUa4ZuWn4sA/image.png 이제 다음은 ipfs서버에 저장하는 함수입니다. 여기까지 문제없이 잘 되신다면 ipfs에 해당 파일이 올라가 있는 상태인거예요이제!! 언제 어디서든 해시값만 있으면 내가 불러다 볼수가 있죠 ㅎㅎ https://cdn.steemitimages.com/DQmQsMiVSgCzPuGtyA88Fje9A5QuTnKc8JE5kiafLNcXYjC/image.png 당연히 input과 button에 함수를 정의해줘야 작동을 하겠쥬?? https://cdn.steemitimages.com/DQmQE1PG8XZcDwpnD5w7CJ6btAWNouJoaUFWuPQJAknk8ff/image.png 콘솔창 보시면 아래 해시값이 보이실거예요!! 저 해시값을 https://ipfs.io/ipfs/QmVDP79GUKAE4ZW77VDm7H1CaxNMQCkm4qwn6MVFt1kep3 이렇게 https://ipfs.io/ipfs/해시값 브라우저 주소창에 입력을 하시면 내가 올린 파일을 볼수가 있답니다! https://cdn.steemitimages.com/DQmUcdnQ3hL2RwdXN7bCbFaFGWYHQGURwrkVeHg6kNwHgYJ/image.png 짜잔.... 별거 아니지만 하하.. 각자 다들 자기가 올린 파일을 확인 하셨으면 제것도 한번 들어가보세요! `https://ipfs.io/ipfs/QmVDP79GUKAE4ZW77VDm7H1CaxNMQCkm4qwn6MVFt1kep3 ` 이주소입니다 ㅎㅎ 오늘 ipfs 해시값을 블록에 저장후, 블록에서 호출하는것까지 하려고 했는데... 너무 피곤해서 오늘은 여기까지만 하겠습니다 ㅠㅠ 내일 일어나는대로 이어서 진행 할게요!!! |
| json metadata | {"tags":["blockchain","react","dapp","ethereum","ipfs"],"image":["https://cdn.steemitimages.com/DQmRxfruqCxaKKn8XndPfiJrHSgJaGNJ4ZB52Um8CWnbqfm/image.png","https://cdn.steemitimages.com/DQmYgn8enVagZpvrmkjjga1vB18PXBhFpncga6SPAwzjUBz/image.png","https://cdn.steemitimages.com/DQmNkLFac96H4AkqXj3DDw3fe2PUPjsrhz3Ci1LnopWidWN/image.png","https://cdn.steemitimages.com/DQmcznJFUK2gZ1x1TX78nzA8dQbjB2eSRp7cjwx8V32ZK8m/image.png","https://cdn.steemitimages.com/DQmVtTp75SySCVMggiKuworxqoK5GNT15njbjFxAexanQN1/image.png","https://cdn.steemitimages.com/DQmVpyGsmNfRA18WvJqHXhYSdKokEWVxiiXTJGNSxjJ4hiA/image.png","https://cdn.steemitimages.com/DQmdWGAiwU4UftpLAZ8BirazRtZMrAi3zPkyim3pknFkSrz/image.png","https://cdn.steemitimages.com/DQmNS7twzTdaTjueLM4ogk5VLp1xWmwUgN5XWC83i2KU7p7/image.png","https://cdn.steemitimages.com/DQmX5sfav8on8XP85Ao1AFwoCFzsmbVkVPC5HG4Y6TttxME/image.png","https://cdn.steemitimages.com/DQmWE3tJPU45uReYkK7grz4DFZ7PrMmLGYGCMK2G2MeAy92/image.png","https://cdn.steemitimages.com/DQmTqwAAzdoLLCGWorm6c2it6YuutJHCmoXRBUa4ZuWn4sA/image.png","https://cdn.steemitimages.com/DQmQsMiVSgCzPuGtyA88Fje9A5QuTnKc8JE5kiafLNcXYjC/image.png","https://cdn.steemitimages.com/DQmQE1PG8XZcDwpnD5w7CJ6btAWNouJoaUFWuPQJAknk8ff/image.png","https://ipfs.io/ipfs/QmVDP79GUKAE4ZW77VDm7H1CaxNMQCkm4qwn6MVFt1kep3","https://cdn.steemitimages.com/DQmUcdnQ3hL2RwdXN7bCbFaFGWYHQGURwrkVeHg6kNwHgYJ/image.png"],"links":["https://github.com/truffle-box/react-box에","https://ipfs.io/ipfs/해시값"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | react-dapp-2-2 |
| title | react를 활용한 Dapp 2탄입니다!! (2.개발환경 세팅및 파일 업로드!) |
| Transaction Info | Block #28851527/Trx f30ba70918b75300536d5edd9311dcba0bf9e09d |
View Raw JSON Data
{
"block": 28851527,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요!\n\n오늘도 저번시간에 이어서 ipfs에 대해서 말씀드리려 합니다 ㅎㅎ\n\n제가 지금 사용하는 이 스팀잇에서 운영? 하는 Dtube라는 블록체인 플랫폼이 있습니다.\n\n그 Dtube가 바로!! ipfs를 활용해서 동영상의 해시값을 블록에 저장을 하는 플랫폼인거죠 ㅎㅎㅎㅎ\n\n유튜브랑 굉장히 유사하지만.... 유튜브와의 차이점은 데이터가 분산저장되고+블록에 저장이 되고\n\n광고도없구.. 동영상의 조회수or 추천수 같은걸로 Dtube만의 특별한 알고리즘에 의해 보상이 지급되어지는 방식인거죠 \n\n<br/>\n<hr/>\n<br/>\n\n오늘 저희는 간단히 ipfs를 활용한 블록에 데이터저장(정확이는 데이터의 해시값이죠..)을 저장 해보는 시간을 가지려 합니다!\n\nipfs에 대한 개념이 많이 부족하신분은 따라하시기 어려울수가 있어요 ㅎㅎ\n\n\n자 오늘 할 내용은 react를 활용해 ipfs에 데이터를 올리고 나온 해시값을 블록에 저장해보도록 하겠습니다.\n\n\n오늘 프로젝트도 어김없이 truffle unbox react를 활용 할건데요, 이 프로젝트 다운받는 법은 \n\n콜라구매하고 판매하는 Dapp시간에 설명 드렸지만 까먹으신 분들을 위해 다시한번 설명 드리겠습니다.\n\nhttps://github.com/truffle-box/react-box에 들어가셔서 \n\nhttps://cdn.steemitimages.com/DQmRxfruqCxaKKn8XndPfiJrHSgJaGNJ4ZB52Um8CWnbqfm/image.png\n\ndevelop 모드로 다운받아주시면 됩니다.\n\n그리고 나서 압축을 풀고 cmd나 powershell에서 npm install 을 해주면 개발환경 세팅은 끝!\n\n\nhttps://cdn.steemitimages.com/DQmYgn8enVagZpvrmkjjga1vB18PXBhFpncga6SPAwzjUBz/image.png\n\n\n자 그럼이제 코딩을 해볼까유!\n\nhttps://cdn.steemitimages.com/DQmNkLFac96H4AkqXj3DDw3fe2PUPjsrhz3Ci1LnopWidWN/image.png\n\n오늘도 가차없이 SimpleStorage.sol파일을 삭제해 주겠습니다.\n\n그리고 contracts폴더에 새로 FileHash.sol 파일을 생성해주세요!\n\n\n\nhttps://cdn.steemitimages.com/DQmcznJFUK2gZ1x1TX78nzA8dQbjB2eSRp7cjwx8V32ZK8m/image.png\n\n위 사진과 같이 코드를 작성해주세요! 정말 설명이 필요없는 간단한 코드죠??\n\nset함수에서 ipfsHash라는 string 변수에 파일의 해시값을 저장하고, get함수에서 ipfsHash값을 불러옵니다\n\n\nhttps://cdn.steemitimages.com/DQmVtTp75SySCVMggiKuworxqoK5GNT15njbjFxAexanQN1/image.png\n\n이부분도 변경하는거 잊지 말아주세요!\n\n\nhttps://cdn.steemitimages.com/DQmVpyGsmNfRA18WvJqHXhYSdKokEWVxiiXTJGNSxjJ4hiA/image.png\n\nsrc 폴더안에 components폴더를 새로생성하고, 이안에 FileForm.js라는 컴포넌트를 하나 생성해주세요!\n\n\n1. FileForm컨포넌트에서는 파일이 입력되면, ipfs에 저장이되고 해시값을 반환받습니다.\n2. 반환받은 해시값을 블록에 저장하고, 저희 클라이언트 화면에 해시값을 출력합니다.\n끝.\n\n이제 FileForm.js안에 코드를 작성해 보겠습니다.\n\n그전에 컨트랙트 컴파일부터 한번 해주고 시작할게요\n\ntruffle.js 파일 Private BlockChain Network 환경에 맞춰서 수정해야하는건 다들 기억하고 계실거라고 믿습니다!!\n\nhttps://cdn.steemitimages.com/DQmdWGAiwU4UftpLAZ8BirazRtZMrAi3zPkyim3pknFkSrz/image.png\n\n컴파일 정상적으로 완료됐습니다! 벌써부터 오류가 나시는분은 없길 바라겠습니다 ㅠ\n\n\n제일먼저 파일을 올리면 ipfs에 올라가도록 코딩을 진행 하겠습니다.\n\n콘솔창에서 npm install ipfs-api --save로 ipfs-api 라는 모듈을 설치해주세요! ipfs를 사용하기위해 필수 모듈입니다\n\n\nhttps://cdn.steemitimages.com/DQmNS7twzTdaTjueLM4ogk5VLp1xWmwUgN5XWC83i2KU7p7/image.png\n\n방금 설치한 ipfs-api를 import해주시고, 프론트엔드 화면을 위와같이 작성해주시면\n\n아주많이 조잡한... 화면이 구성이됩니다!\n\n\nhttps://cdn.steemitimages.com/DQmX5sfav8on8XP85Ao1AFwoCFzsmbVkVPC5HG4Y6TttxME/image.png\n\nstate내에 buffer변수를 null로 선언해주세요!\n\n그리고 capture라는 함수를 만들고 위와같이 코딩해주시면 되겠습니다.\n\ncapture 함수는, 저희가 업로드한 파일에 대한 버퍼및 크기를 체크하고 저장하는 함수입니다.\n\nnew window.fileReader()로써 생성한 FileReader객체를 reader에 담은후 readerAsArrayBuffer(file) 코드로\n\n그파일에 대한 버퍼사이즈를 읽게 됩니다.\n\n그후에 onloadend 이벤트가 발생되고, 그 결과값을 state내에 buffer변수에 저장하는 역할을 하는 함수입니다.\n\n\nhttps://cdn.steemitimages.com/DQmWE3tJPU45uReYkK7grz4DFZ7PrMmLGYGCMK2G2MeAy92/image.png\n\n자 다음으로 파일을 업로드하게되면, 위와같이 콘솔창에 그파일에 대한 버퍼 배열이 쭈르르르르륵 나오면 \n현재까지는 오류없이 잘 하신겁니다!!\n\n\nhttps://cdn.steemitimages.com/DQmTqwAAzdoLLCGWorm6c2it6YuutJHCmoXRBUa4ZuWn4sA/image.png\n\n이제 다음은 ipfs서버에 저장하는 함수입니다.\n\n여기까지 문제없이 잘 되신다면 ipfs에 해당 파일이 올라가 있는 상태인거예요이제!!\n\n언제 어디서든 해시값만 있으면 내가 불러다 볼수가 있죠 ㅎㅎ\n\nhttps://cdn.steemitimages.com/DQmQsMiVSgCzPuGtyA88Fje9A5QuTnKc8JE5kiafLNcXYjC/image.png\n \n당연히 input과 button에 함수를 정의해줘야 작동을 하겠쥬??\n\n\nhttps://cdn.steemitimages.com/DQmQE1PG8XZcDwpnD5w7CJ6btAWNouJoaUFWuPQJAknk8ff/image.png\n\n콘솔창 보시면 아래 해시값이 보이실거예요!!\n\n저 해시값을 https://ipfs.io/ipfs/QmVDP79GUKAE4ZW77VDm7H1CaxNMQCkm4qwn6MVFt1kep3\n이렇게 https://ipfs.io/ipfs/해시값\n\n브라우저 주소창에 입력을 하시면 내가 올린 파일을 볼수가 있답니다!\n\nhttps://cdn.steemitimages.com/DQmUcdnQ3hL2RwdXN7bCbFaFGWYHQGURwrkVeHg6kNwHgYJ/image.png\n\n짜잔.... 별거 아니지만 하하..\n\n각자 다들 자기가 올린 파일을 확인 하셨으면 제것도 한번 들어가보세요!\n\n`https://ipfs.io/ipfs/QmVDP79GUKAE4ZW77VDm7H1CaxNMQCkm4qwn6MVFt1kep3 `\n\n이주소입니다 ㅎㅎ\n\n\n\n오늘 ipfs 해시값을 블록에 저장후, 블록에서 호출하는것까지 하려고 했는데...\n\n너무 피곤해서 오늘은 여기까지만 하겠습니다 ㅠㅠ\n\n내일 일어나는대로 이어서 진행 할게요!!!",
"json_metadata": "{\"tags\":[\"blockchain\",\"react\",\"dapp\",\"ethereum\",\"ipfs\"],\"image\":[\"https://cdn.steemitimages.com/DQmRxfruqCxaKKn8XndPfiJrHSgJaGNJ4ZB52Um8CWnbqfm/image.png\",\"https://cdn.steemitimages.com/DQmYgn8enVagZpvrmkjjga1vB18PXBhFpncga6SPAwzjUBz/image.png\",\"https://cdn.steemitimages.com/DQmNkLFac96H4AkqXj3DDw3fe2PUPjsrhz3Ci1LnopWidWN/image.png\",\"https://cdn.steemitimages.com/DQmcznJFUK2gZ1x1TX78nzA8dQbjB2eSRp7cjwx8V32ZK8m/image.png\",\"https://cdn.steemitimages.com/DQmVtTp75SySCVMggiKuworxqoK5GNT15njbjFxAexanQN1/image.png\",\"https://cdn.steemitimages.com/DQmVpyGsmNfRA18WvJqHXhYSdKokEWVxiiXTJGNSxjJ4hiA/image.png\",\"https://cdn.steemitimages.com/DQmdWGAiwU4UftpLAZ8BirazRtZMrAi3zPkyim3pknFkSrz/image.png\",\"https://cdn.steemitimages.com/DQmNS7twzTdaTjueLM4ogk5VLp1xWmwUgN5XWC83i2KU7p7/image.png\",\"https://cdn.steemitimages.com/DQmX5sfav8on8XP85Ao1AFwoCFzsmbVkVPC5HG4Y6TttxME/image.png\",\"https://cdn.steemitimages.com/DQmWE3tJPU45uReYkK7grz4DFZ7PrMmLGYGCMK2G2MeAy92/image.png\",\"https://cdn.steemitimages.com/DQmTqwAAzdoLLCGWorm6c2it6YuutJHCmoXRBUa4ZuWn4sA/image.png\",\"https://cdn.steemitimages.com/DQmQsMiVSgCzPuGtyA88Fje9A5QuTnKc8JE5kiafLNcXYjC/image.png\",\"https://cdn.steemitimages.com/DQmQE1PG8XZcDwpnD5w7CJ6btAWNouJoaUFWuPQJAknk8ff/image.png\",\"https://ipfs.io/ipfs/QmVDP79GUKAE4ZW77VDm7H1CaxNMQCkm4qwn6MVFt1kep3\",\"https://cdn.steemitimages.com/DQmUcdnQ3hL2RwdXN7bCbFaFGWYHQGURwrkVeHg6kNwHgYJ/image.png\"],\"links\":[\"https://github.com/truffle-box/react-box에\",\"https://ipfs.io/ipfs/해시값\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "react-dapp-2-2",
"title": "react를 활용한 Dapp 2탄입니다!! (2.개발환경 세팅및 파일 업로드!)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-24T18:51:51",
"trx_id": "f30ba70918b75300536d5edd9311dcba0bf9e09d",
"trx_in_block": 17,
"virtual_op": 0
}minhokimreceived 0.002 SP curation reward for @sesil / actifit-sesil-20181217t123341536z2018/12/24 12:33:42
minhokimreceived 0.002 SP curation reward for @sesil / actifit-sesil-20181217t123341536z
2018/12/24 12:33:42
| comment author | sesil |
| comment permlink | actifit-sesil-20181217t123341536z |
| curator | minhokim |
| reward | 4.021791 VESTS |
| Transaction Info | Block #28843965/Virtual Operation #12 |
View Raw JSON Data
{
"block": 28843965,
"op": [
"curation_reward",
{
"comment_author": "sesil",
"comment_permlink": "actifit-sesil-20181217t123341536z",
"curator": "minhokim",
"reward": "4.021791 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-24T12:33:42",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": 12
}minhokimreceived 0.001 SP curation reward for @airforce / actifit-airforce-20181217t123233844z2018/12/24 12:32:33
minhokimreceived 0.001 SP curation reward for @airforce / actifit-airforce-20181217t123233844z
2018/12/24 12:32:33
| comment author | airforce |
| comment permlink | actifit-airforce-20181217t123233844z |
| curator | minhokim |
| reward | 2.010895 VESTS |
| Transaction Info | Block #28843942/Virtual Operation #7 |
View Raw JSON Data
{
"block": 28843942,
"op": [
"curation_reward",
{
"comment_author": "airforce",
"comment_permlink": "actifit-airforce-20181217t123233844z",
"curator": "minhokim",
"reward": "2.010895 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-24T12:32:33",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": 7
}minhokimupvoted (100.00%) @fyrstikken / pine-full-painful-little-star2018/12/20 12:34:57
minhokimupvoted (100.00%) @fyrstikken / pine-full-painful-little-star
2018/12/20 12:34:57
| author | fyrstikken |
| permlink | pine-full-painful-little-star |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28728842/Trx 6bced87f08beea9f141516143502c64363e059af |
View Raw JSON Data
{
"block": 28728842,
"op": [
"vote",
{
"author": "fyrstikken",
"permlink": "pine-full-painful-little-star",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-20T12:34:57",
"trx_id": "6bced87f08beea9f141516143502c64363e059af",
"trx_in_block": 18,
"virtual_op": 0
}fyrstikkenupvoted (1.00%) @minhokim / react-dapp-2-1-ipfs2018/12/20 08:11:57
fyrstikkenupvoted (1.00%) @minhokim / react-dapp-2-1-ipfs
2018/12/20 08:11:57
| author | minhokim |
| permlink | react-dapp-2-1-ipfs |
| voter | fyrstikken |
| weight | 100 (1.00%) |
| Transaction Info | Block #28723585/Trx a61cd9eeca5f915da4a07d61e600a5fa8848a21e |
View Raw JSON Data
{
"block": 28723585,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-2-1-ipfs",
"voter": "fyrstikken",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2018-12-20T08:11:57",
"trx_id": "a61cd9eeca5f915da4a07d61e600a5fa8848a21e",
"trx_in_block": 2,
"virtual_op": 0
}minhokimpublished a new post: react-dapp-2-1-ipfs2018/12/20 07:52:51
minhokimpublished a new post: react-dapp-2-1-ipfs
2018/12/20 07:52:51
| author | minhokim |
| body | 안녕하세요 ㅎㅎ 저번 시간에는 react를 활용해서 콜라를 구매하고 판매하는 그리고 갯수를 입력하고, 입력 받은 만큼 구매를 하는 Dapp을 만들어보았죠 ㅎㅎ 입력 받은 만큼 판매를 하는 기능을 구현해보라는 숙제아닌 숙제를 한가지 내드렸었는데 하셨는지요! ? 아마 어려움없이 하셨을거라 생각되어집니다! 오늘부터는 ipfs를 활용해서 블록체인에 데이터를 올리고, 가져오는 Dapp을 한번 만들어볼거예요! 처음 접하시는 분들은 어려움이 적잖아 있을거라 생각되어지지만, 잘 따라만 하시면 크게 어려운 점은 없을거예요! 중간에 막하시는거나 이해가 안되는점 있으면 언제든 댓글 달아주시면 확인하는대로 바로 답변드릴게요! <hr/> 일단<b> ipfs</b>가 무엇인지부터 알아봐야 겠죠 ipfs란! InterPlanetary File System입니다..... 그게 뭐냐 하면.. 행성간의 파일 시스템입니다.......... 뭔말이야이게 ㅋㅋㅋㅋ 자, ipfs를 간단히 말하면 분산화된 파일 저장 시스템입니다! 물론 ipfs장점은 분산화된 저장방법 빼고도 여러가지가 있지만 가장 큰 장점을 꼽으라면 위에 말씀드렸던 파일 저장의 방법이죠 ㅎㅎ 저희가 사용하는 모든 어플리케이션은 중앙서버에 모든 데이터를 저장하게 설계가 되어있죠. 예를들면 유튜브의 동영상이 어디에 저장될까요? 당연히 유튜브자체의 서버에 저장이 되어있겠죠? 클라우드를 사용하는 어플리케이션이라면 클라우드 서버에 저장이 될테구요. 하지만.. 만약에라도 정말 만약에 유튜브의 서버가 위치한 지역에 지진이나서 무너진다던가 폭탄을 맞는다던가한다면.. 그지역의 유튜브 서버에 저장되어있는 동영상들은 모두 영영 사라지게 되어버립니다.. 물론 유튜브같은 세계적인 기업은 이중화를 넘어 삼중화 사중화.. 이상까지 해놓을테지만 .. 그래서 나온게 바로<b> IPFS</b>라는 것입니다. IPFS 공식 홈페이지에 들어가보면 왜 IPFS를 사용해야하나? 를 굉장히 이해하기 쉽게 설명해주고있어요! https://cdn.steemitimages.com/DQmPxvao6yxRJfD1P5icZ17RUJ7cJtrd5pbLBPxvTJMoxYk/image.png <div> <b>https://ipfs.io/#why</b><div> 1. 분산화된 저장 시스템이다! 2. HTTP에 비해서 굉장히 효율적이다! <b>3. 블록체인과 같이 사용하기 굉장히 적합하다 </b> 이게 바로 저희가 이번 시간에 IPFS를 알아보는 이유죠! 저희가 DApp을 개발하기위해 사용하는 이더리움 네트워크에 데이터를 저장할수가 있을까요? 간단한 글정도는 당연히 가능하고, 작은용량의 사진까지도 가능할거라고 생각되거든요. 하지만 동영상이나, 고해상도 사진을 이더리움 네트워크에 올린다면.... 네 물론 억지로 올리려면 쪼개서 올릴순 있을거예요 이더리움의 한블락의 크기가 약 1MB정도인데 1기가의 동영상만 올리려해도 얼마나 쪼개서 올려야 하는지 감이 오시나요.. 그래서 바로 IPFS를 활용하는것입니다. IPFS를 활용해서 어떻게 올리냐!!! 네 이제 설명 드릴게요 ㅋㅋ IPFS에 txt파일이나, 사진 , 동영상 등등 파일을 업로드 하게되면 그에 대응되는 해쉬값이라는게 생성이 되요! 저희는 이 해시값을 블록에 올림는 방법을 블록체인에 파일을 직접 업로드 하는것을 대신할거랍니다! 제가 간단히 만든 웹에서 IPFS에 파일을 올려보고, 해시값을 블록에 담아볼게요! https://cdn.steemitimages.com/DQmSzSyrvoqqY5pMx9G3Wbq74dnshmeRUkFTXJy8TxHRouF/image.png 이런 웹사이트입니다... 급하게 만드느라 대충대충 만들었어요 ㅎㅎㅎ 파일을 아무거나 하나올리고 버튼을 클릭하면 https://cdn.steemitimages.com/DQmT3U7H7iQh4qrGZ2MZM92qtg7XSUREF8oSJGNHQ1CMBft/image.png 다음 사진과 같이 그 파일에대한 해시값이 나오게됩니다 ㅎㅎ 그리고 https:// ipfs.io/ipfs/QmYz95ZSCFgQyXkbSfU5wz4dbP1UfV1FJUKMuu2Sohs7pn에 들어가시면 제가 올린 파일이 무엇인지 볼수가 있게되는거죠! 개인적으로 mcthemax를 참좋아해서 관련 음악을올렸네요 자 결론적으로 IPFS에 파일을 올리면! 다들 토렌트라는 프로그램을 아실겁니다. 토렌트와 같은 원리로 여러노드에 쪼개서 파일이 저장이되구, 그 쪼갠 값을 합친게 바로 위에서 보인 해시값이 되는 원리입니다. 더욱 자세한 설명을 원하시면 백서를 읽어보시길 추천드릴게요.... 오늘은 간단히 IPFS에 대해서 알아보았습니다! 다음시간에는 위에 보여준것처럼 코딩을 진행해보도록 할게요! |
| json metadata | {"tags":["blockchain","react","dapp","ethereum","ipfs"],"image":["https://cdn.steemitimages.com/DQmPxvao6yxRJfD1P5icZ17RUJ7cJtrd5pbLBPxvTJMoxYk/image.png","https://cdn.steemitimages.com/DQmSzSyrvoqqY5pMx9G3Wbq74dnshmeRUkFTXJy8TxHRouF/image.png","https://cdn.steemitimages.com/DQmT3U7H7iQh4qrGZ2MZM92qtg7XSUREF8oSJGNHQ1CMBft/image.png"],"links":["https://ipfs.io/#why"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | blockchain |
| permlink | react-dapp-2-1-ipfs |
| title | react를 활용한 Dapp 2탄입니다!! (1. ipfs란?) |
| Transaction Info | Block #28723203/Trx 1b5c757dbab94cc3c10f3fbfc0a49a155087c486 |
View Raw JSON Data
{
"block": 28723203,
"op": [
"comment",
{
"author": "minhokim",
"body": "안녕하세요 ㅎㅎ\n\n저번 시간에는 react를 활용해서 콜라를 구매하고 판매하는 그리고 갯수를 입력하고, 입력 받은 만큼 구매를 하는\nDapp을 만들어보았죠 ㅎㅎ\n\n입력 받은 만큼 판매를 하는 기능을 구현해보라는 숙제아닌 숙제를 한가지 내드렸었는데 하셨는지요! ?\n아마 어려움없이 하셨을거라 생각되어집니다!\n\n오늘부터는 ipfs를 활용해서 블록체인에 데이터를 올리고, 가져오는 Dapp을 한번 만들어볼거예요!\n\n처음 접하시는 분들은 어려움이 적잖아 있을거라 생각되어지지만, 잘 따라만 하시면 크게 어려운 점은 없을거예요!\n\n중간에 막하시는거나 이해가 안되는점 있으면 언제든 댓글 달아주시면 확인하는대로 바로 답변드릴게요!\n\n\n\n<hr/>\n\n\n\n일단<b> ipfs</b>가 무엇인지부터 알아봐야 겠죠 \n\nipfs란! InterPlanetary File System입니다..... 그게 뭐냐 하면.. 행성간의 파일 시스템입니다..........\n뭔말이야이게 ㅋㅋㅋㅋ\n\n자, ipfs를 간단히 말하면 분산화된 파일 저장 시스템입니다!\n\n\n물론 ipfs장점은 분산화된 저장방법 빼고도 여러가지가 있지만 가장 큰 장점을 꼽으라면 위에 말씀드렸던\n\n파일 저장의 방법이죠 ㅎㅎ\n\n저희가 사용하는 모든 어플리케이션은 중앙서버에 모든 데이터를 저장하게 설계가 되어있죠.\n\n예를들면 유튜브의 동영상이 어디에 저장될까요? \n\n당연히 유튜브자체의 서버에 저장이 되어있겠죠?\n\n클라우드를 사용하는 어플리케이션이라면 클라우드 서버에 저장이 될테구요.\n\n\n하지만.. 만약에라도 정말 만약에 유튜브의 서버가 위치한 지역에 지진이나서 \n무너진다던가 폭탄을 맞는다던가한다면.. \n그지역의 유튜브 서버에 저장되어있는 동영상들은 모두 영영 사라지게 되어버립니다..\n\n물론 유튜브같은 세계적인 기업은 이중화를 넘어 삼중화 사중화.. 이상까지 해놓을테지만 ..\n\n\n\n그래서 나온게 바로<b> IPFS</b>라는 것입니다.\n\nIPFS 공식 홈페이지에 들어가보면 왜 IPFS를 사용해야하나? 를 굉장히 이해하기 쉽게 설명해주고있어요!\n\nhttps://cdn.steemitimages.com/DQmPxvao6yxRJfD1P5icZ17RUJ7cJtrd5pbLBPxvTJMoxYk/image.png\n\n<div> <b>https://ipfs.io/#why</b><div>\n\n1. 분산화된 저장 시스템이다!\n2. HTTP에 비해서 굉장히 효율적이다!\n\n<b>3. 블록체인과 같이 사용하기 굉장히 적합하다 </b> 이게 바로 저희가 이번 시간에 IPFS를 알아보는 이유죠!\n\n\n저희가 DApp을 개발하기위해 사용하는 이더리움 네트워크에 데이터를 저장할수가 있을까요?\n\n간단한 글정도는 당연히 가능하고, 작은용량의 사진까지도 가능할거라고 생각되거든요.\n\n하지만 동영상이나, 고해상도 사진을 이더리움 네트워크에 올린다면....\n\n네 물론 억지로 올리려면 쪼개서 올릴순 있을거예요 이더리움의 한블락의 크기가 약 1MB정도인데 \n1기가의 동영상만 올리려해도 얼마나 쪼개서 올려야 하는지 감이 오시나요..\n\n그래서 바로 IPFS를 활용하는것입니다.\n\nIPFS를 활용해서 어떻게 올리냐!!! 네 이제 설명 드릴게요 ㅋㅋ\n\n\nIPFS에 txt파일이나, 사진 , 동영상 등등 파일을 업로드 하게되면 그에 대응되는 해쉬값이라는게 생성이 되요!\n\n저희는 이 해시값을 블록에 올림는 방법을 블록체인에 파일을 직접 업로드 하는것을 대신할거랍니다!\n\n\n제가 간단히 만든 웹에서 IPFS에 파일을 올려보고, 해시값을 블록에 담아볼게요!\n\nhttps://cdn.steemitimages.com/DQmSzSyrvoqqY5pMx9G3Wbq74dnshmeRUkFTXJy8TxHRouF/image.png\n\n이런 웹사이트입니다... 급하게 만드느라 대충대충 만들었어요 ㅎㅎㅎ\n\n\n파일을 아무거나 하나올리고 버튼을 클릭하면\n\nhttps://cdn.steemitimages.com/DQmT3U7H7iQh4qrGZ2MZM92qtg7XSUREF8oSJGNHQ1CMBft/image.png\n\n다음 사진과 같이 그 파일에대한 해시값이 나오게됩니다 ㅎㅎ\n\n그리고 https:// ipfs.io/ipfs/QmYz95ZSCFgQyXkbSfU5wz4dbP1UfV1FJUKMuu2Sohs7pn에 들어가시면 제가 올린 파일이 무엇인지 볼수가 있게되는거죠!\n\n개인적으로 mcthemax를 참좋아해서 관련 음악을올렸네요\n\n\n자 결론적으로 IPFS에 파일을 올리면!\n\n다들 토렌트라는 프로그램을 아실겁니다.\n\n토렌트와 같은 원리로 여러노드에 쪼개서 파일이 저장이되구, 그 쪼갠 값을 합친게 바로 위에서 보인 해시값이 \n되는 원리입니다.\n\n더욱 자세한 설명을 원하시면 백서를 읽어보시길 추천드릴게요....\n\n오늘은 간단히 IPFS에 대해서 알아보았습니다!\n\n다음시간에는 위에 보여준것처럼 코딩을 진행해보도록 할게요!",
"json_metadata": "{\"tags\":[\"blockchain\",\"react\",\"dapp\",\"ethereum\",\"ipfs\"],\"image\":[\"https://cdn.steemitimages.com/DQmPxvao6yxRJfD1P5icZ17RUJ7cJtrd5pbLBPxvTJMoxYk/image.png\",\"https://cdn.steemitimages.com/DQmSzSyrvoqqY5pMx9G3Wbq74dnshmeRUkFTXJy8TxHRouF/image.png\",\"https://cdn.steemitimages.com/DQmT3U7H7iQh4qrGZ2MZM92qtg7XSUREF8oSJGNHQ1CMBft/image.png\"],\"links\":[\"https://ipfs.io/#why\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "react-dapp-2-1-ipfs",
"title": "react를 활용한 Dapp 2탄입니다!! (1. ipfs란?)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-20T07:52:51",
"trx_id": "1b5c757dbab94cc3c10f3fbfc0a49a155087c486",
"trx_in_block": 7,
"virtual_op": 0
}2018/12/18 06:50:00
2018/12/18 06:50:00
| author | minhokim |
| body | <html> <p><br> 안녕하세요.ㅎ </p> <p><br></p> <p>오늘은 기존에 진행하던 react기반의 dapp만들기는 잠시 쉬고,저번시간에 말씀드렸던 가스비에 대해서 </p> <p>이야기를 좀 드려볼까 합니다.</p> <p><br></p> <p><strong>가스란 무엇인가!!</strong> </p> <p>한마디로 정의하면 가스는 <em><strong>이더리움 네트워크를 사용하는데 지불하는 수수료</strong></em> 입니다</p> <p><br></p> <p>솔리디티 언어에서는 나 자신은 물론이고 사용자들이 어플리케이션을 사용할 때 기본적으로 가스가 </p> <p>지불되어지도록 설계되어있습니다. </p> <p><br></p> <p>이 가스는 각 노드들에게 보상을 주기위해 이더리움 개발자들이 고안해낸 것으로, 개인적인 생각으로는 </p> <p>사용자나, Dapp개발자가 이더리움 네트워크를 사용하는데 부담을 느끼게 하는 요소라고 생각되어집니다. </p> <p> </p> <p>Dapp을 만들고 배포할 때, 또한 어플리케이션 내부에서 무언가에 의해 함수의 호출이 일어남으로써 트랜잭션이 발생했을 때 ...뭐만하면 가스비가 소모되죠... </p> <p><br></p> <p>즉, 가스비=굉장히 소량의 이더리움입니다.. 결국 내돈이라는 이야기입니다. </p> <p><br></p> <p>솔리디티로 짜여진 컨트랙트의 구조가 복잡하면 복잡할수록 가스비의 비용은 더욱더 높아지게 되고, 심지어 코드에서 띄어쓰기 한줄조차도 가스비에 포함이됩니다.. </p> <p>다시말해서 컨트랙트 내부의 연산을 수행하는데 소모되는 컴퓨팅 자원의 양에 비례해서 가스비가 책정되어지는 구조입니다. </p> <p><br></p> <p><strong>이더리움에서의 개발자,사용자의 가스비 부담을 줄이기 위해선 굉장히 효율적으로, 군더더기없는 코드를 짜야합니다. </strong></p> <p><br></p> <p>가스의 단위인 wei는 이더리움을 잘게 쪼갠 단위라고 생각하시면 편하실겁니다.</p> <p>음.. 이더의 최소 소수점자리가 18자리까지 가능하니까 ,</p> <p> 1 wei가 바로 0.000000000000000001 ether인 것 입니다.</p> <p>가스비를 많이 책정하면 할수록 송금에대한 속도는 빨라진다고 볼수가 있습니다.</p> <p><br></p> <p>간단하게 가스비가 무엇인지에 대해서 설명 드렸습니다. 좀더 나아가서 Gas Limit과 Gas Price에 대해서도</p> <p>설명 드리고 싶지만 오늘은 제가 힘들어서.......... 여기까지만 포스팅하고 다음에 또 기회가 되면 다뤄보도록 </p> <p>하겠습니다!</p> <p><br></p> </html> |
| json metadata | {"tags":["blockchain","dapp","ethereum","bitcoin","gas"],"app":"steemit/0.1","format":"html"} |
| parent author | |
| parent permlink | blockchain |
| permlink | 3ih9y6 |
| title | 이더리움 네트워크에서의 가스비란?? |
| Transaction Info | Block #28664413/Trx 0dca2a912b2e806f067e103561f6c3d18585793a |
View Raw JSON Data
{
"block": 28664413,
"op": [
"comment",
{
"author": "minhokim",
"body": "<html>\n<p><br>\n 안녕하세요.ㅎ </p>\n<p><br></p>\n<p>오늘은 기존에 진행하던 react기반의 dapp만들기는 잠시 쉬고,저번시간에 말씀드렸던 가스비에 대해서 </p>\n<p>이야기를 좀 드려볼까 합니다.</p>\n<p><br></p>\n<p><strong>가스란 무엇인가!!</strong> </p>\n<p>한마디로 정의하면 가스는 <em><strong>이더리움 네트워크를 사용하는데 지불하는 수수료</strong></em> 입니다</p>\n<p><br></p>\n<p>솔리디티 언어에서는 나 자신은 물론이고 사용자들이 어플리케이션을 사용할 때 기본적으로 가스가 </p>\n<p>지불되어지도록 설계되어있습니다. </p>\n<p><br></p>\n<p>이 가스는 각 노드들에게 보상을 주기위해 이더리움 개발자들이 고안해낸 것으로, 개인적인 생각으로는 </p>\n<p>사용자나, Dapp개발자가 이더리움 네트워크를 사용하는데 부담을 느끼게 하는 요소라고 생각되어집니다. </p>\n<p> </p>\n<p>Dapp을 만들고 배포할 때, 또한 어플리케이션 내부에서 무언가에 의해 함수의 호출이 일어남으로써 트랜잭션이 발생했을 때 ...뭐만하면 가스비가 소모되죠... </p>\n<p><br></p>\n<p>즉, 가스비=굉장히 소량의 이더리움입니다.. 결국 내돈이라는 이야기입니다. </p>\n<p><br></p>\n<p>솔리디티로 짜여진 컨트랙트의 구조가 복잡하면 복잡할수록 가스비의 비용은 더욱더 높아지게 되고, 심지어 코드에서 띄어쓰기 한줄조차도 가스비에 포함이됩니다.. </p>\n<p>다시말해서 컨트랙트 내부의 연산을 수행하는데 소모되는 컴퓨팅 자원의 양에 비례해서 가스비가 책정되어지는 구조입니다. </p>\n<p><br></p>\n<p><strong>이더리움에서의 개발자,사용자의 가스비 부담을 줄이기 위해선 굉장히 효율적으로, 군더더기없는 코드를 짜야합니다. </strong></p>\n<p><br></p>\n<p>가스의 단위인 wei는 이더리움을 잘게 쪼갠 단위라고 생각하시면 편하실겁니다.</p>\n<p>음.. 이더의 최소 소수점자리가 18자리까지 가능하니까 ,</p>\n<p> 1 wei가 바로 0.000000000000000001 ether인 것 입니다.</p>\n<p>가스비를 많이 책정하면 할수록 송금에대한 속도는 빨라진다고 볼수가 있습니다.</p>\n<p><br></p>\n<p>간단하게 가스비가 무엇인지에 대해서 설명 드렸습니다. 좀더 나아가서 Gas Limit과 Gas Price에 대해서도</p>\n<p>설명 드리고 싶지만 오늘은 제가 힘들어서.......... 여기까지만 포스팅하고 다음에 또 기회가 되면 다뤄보도록 </p>\n<p>하겠습니다!</p>\n<p><br></p>\n</html>",
"json_metadata": "{\"tags\":[\"blockchain\",\"dapp\",\"ethereum\",\"bitcoin\",\"gas\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "3ih9y6",
"title": "이더리움 네트워크에서의 가스비란??"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-18T06:50:00",
"trx_id": "0dca2a912b2e806f067e103561f6c3d18585793a",
"trx_in_block": 25,
"virtual_op": 0
}minhokimupvoted (100.00%) @airforce / actifit-airforce-20181217t123233844z2018/12/17 12:36:33
minhokimupvoted (100.00%) @airforce / actifit-airforce-20181217t123233844z
2018/12/17 12:36:33
| author | airforce |
| permlink | actifit-airforce-20181217t123233844z |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28642561/Trx 0252331f5cd2cd19855136e4dded2a933574464a |
View Raw JSON Data
{
"block": 28642561,
"op": [
"vote",
{
"author": "airforce",
"permlink": "actifit-airforce-20181217t123233844z",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-17T12:36:33",
"trx_id": "0252331f5cd2cd19855136e4dded2a933574464a",
"trx_in_block": 6,
"virtual_op": 0
}minhokimupvoted (100.00%) @sesil / actifit-sesil-20181217t123341536z2018/12/17 12:36:21
minhokimupvoted (100.00%) @sesil / actifit-sesil-20181217t123341536z
2018/12/17 12:36:21
| author | sesil |
| permlink | actifit-sesil-20181217t123341536z |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28642557/Trx 3d3a14e2aa6f2cf42558088fed7a53e13385886a |
View Raw JSON Data
{
"block": 28642557,
"op": [
"vote",
{
"author": "sesil",
"permlink": "actifit-sesil-20181217t123341536z",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-17T12:36:21",
"trx_id": "3d3a14e2aa6f2cf42558088fed7a53e13385886a",
"trx_in_block": 32,
"virtual_op": 0
}minhokimupvoted (100.00%) @loggiaonfire / peserverance-winning-inspiration-attainment-meme-15450501142018/12/17 12:35:30
minhokimupvoted (100.00%) @loggiaonfire / peserverance-winning-inspiration-attainment-meme-1545050114
2018/12/17 12:35:30
| author | loggiaonfire |
| permlink | peserverance-winning-inspiration-attainment-meme-1545050114 |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28642540/Trx f5839f64a8dc4f16c488f619e3a7258f132ae107 |
View Raw JSON Data
{
"block": 28642540,
"op": [
"vote",
{
"author": "loggiaonfire",
"permlink": "peserverance-winning-inspiration-attainment-meme-1545050114",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-17T12:35:30",
"trx_id": "f5839f64a8dc4f16c488f619e3a7258f132ae107",
"trx_in_block": 1,
"virtual_op": 0
}minhokimpublished a new post: react-dapp-4-dapp2018/12/16 12:22:21
minhokimpublished a new post: react-dapp-4-dapp
2018/12/16 12:22:21
| author | minhokim |
| body | <html> <p>안녕하세요!</p> <p><br></p> <p>저번포스팅때는 콜라를 구매하는 간단한 Dapp을 만들어보았었죠 ㅎㅎ</p> <p>오늘은 갯수를 입력받아 콜라를 구매하는 기능과, 콜라를 판매하는 기능을 구현해 보겠습니다!</p> <p><br></p> <p>먼저 갯수를 입력받아 콜라를 구매하는 기능부터 구현해보겠습니다.</p> <p><br></p> <p>음 저희는 일단 솔리디티 파일먼저 수정하기로 하죠!</p> <p> </p> <p>function BuyCoke() payable external{<br> MyCokeNum[msg.sender]++;;<br> }<br> <br> 위에는 기존 솔리디티 파일 구매 함수입니다.</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmW3SVPeneUyPT6taNp5VrWxezzH3p6nNUAnWSm6NweCSx/image.png</p> <p><br></p> <p>위에사진은 수정된 솔리디티 파일 구매 함수입니다.</p> <p>기존에는 버튼한번클릭에 한개씩만 구매할수있었다면, 저희가 수정한 BuyCoke는 프론트엔드 화면에서 갯수를 입력하면, BuyCoke함수가 갯수를 전달받고 MyCokeNum[msg.sender]에 저장시키는 함수로 변경되었습니다!</p> <p><br></p> <p>이제 App.js를 수정해보도록 하겠습니다. 이부분도 굉장히 간단하니 부담안갖으셔도 될거예요!</p> <p><br></p> <p><br></p> <p>https://cdn.steemitimages.com/DQmRJF1mbswcq8oy1j2CjkUPwVAQQGdcY88SPNzT5qPJfrx/image.png</p> <p><br></p> <p>자! 매우 간단하게 이와같이 만들고, 텍스트박스에서 입력이 이루어 지도록 하겠습니다.</p> <p><br></p> <p><br></p> <p>https://cdn.steemitimages.com/DQmZN4raR5gqzNcPHjHdnqJoq9SEoHJ8Aigwe25Dp1up3D1/image.png</p> <p><br></p> <p>텍스트박스에서 입력되어진 숫자를 저장하기위한 num변수를 새로 state에 만들어주었습니다.</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmcK8RYRLWvwDwrnvfWXpj14nfayYcqoamfGrSUWujcbPY/image.png</p> <p>화면에 텍스트박스가 나오도록 하나 만들어주도록하죠! input type 안에 value값 onChange값들은 지금은 무시해주세요 ㅎㅎ 앞으로 구현해나갈 기능들입니다!</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmShsrhdwFTXYqzmkmh8CuPCnRdUbFf89zcAFEne9cau6J/image.png</p> <p>제가 처음 말씀드렷던대로, react에 대해서 공부를 하셨던 분들이라면 handlechange함수에 대해서 이해를 하고있을거라고 생각되어지지만! 혹시라도 까먹으신분들을 위해 간단히 설명 드리겠습니다.</p> <p><br></p> <p>저희가 아까 작성한 텍스트박스에 value={this.state.num} onChange={this.handleChange} 이 두개가 명시되어 었었죠?</p> <p>handleChange기능을 사용하기위해 미리 코딩을 해둔 상태였습니다.</p> <p>여기서 저희가만든 handleChange함수는 텍스트박스에 어떠한 값이 들어오면 num에 그값을 저장시키는 역할을 담당하고 있습니다!.</p> <p>이부분 잘 이해가 안가시는분들은 댓글도 좋지만, 제가 처음에 말씀드렸던 velopert님의 강의를 다시한번 보고 오시는걸 추천드리겠습니다.</p> <p><br></p> <p>자 마지막으로 buyCoke=()=>{} 함수를 수정해주면 끝이 납니다!</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmdzhJirWXNLdAe1RHqM5Z3Wx3Jg2D7nsxysoJLY3Lx6vp/image.png</p> <p>buyCoke에서도 두부분이 수정되었죠!</p> <p>추가된 this.state.num은 현재 state의 num값을 저희의 컨트랙트로 전달(?)시키는 역할을 합니다!</p> <p>아까 수정한 solidity파일을 보시면 BuyCoke함수를 실행시키기 위해서 cokeNum이라는 값을 받아야했었죠?</p> <p>그리고 아래는 콜라에대한 값을 지불하는 5*this.state.num 이부분이 변경되었죠 ㅎ</p> <p>(콜라가격도 변경시켰답니다..)</p> <p><br></p> <p>이제 입력받은만큼 콜라를 구매하는 기능은 다끝났습니다!</p> <p>콜라를 재판매(?)환불(?) 하는 기능을 작성해보도록 하죠</p> <p><br></p> <p>저희가 작성한 계약 솔리디티 파일을 다시 열어주세요!</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmRJ8E85LYMiLHhLDRyDCAMhSHexiXycGgduVUFaJKEdMU/image.png</p> <p><br></p> <p>빨간부분으로 포인트를 준곳이 콜라판매하는 함수입니다.</p> <p>cokePrice 즉, 가격을 입력받아와서 내가 가지고있는 콜라양x가격을 sell에 저장을 합니다.</p> <p>다음으로 콜라를 팔았으니까, 나의 콜라는 0이 되야겠죠 그래서 0으로 만들어주었구요</p> <p>그리고 위에서 계산한 총량을 msg.sender에게 다시 전송을 해주는겁니다</p> <p>콜라를 다시 팔았으니 저는 돈을 받아야하니까요 ㅎㅎ</p> <p><br></p> <p>이제 다시 App.js로 돌아가겠습니다.</p> <p>https://cdn.steemitimages.com/DQmRvVfwssavZCgqsiWsaiQTxwsurCsjPmwcFZn5tnLwzkM/image.png</p> <p>자 먼저 콜라판마해기 버튼을 만들어줍니다! 안에 sellCoke함수는 이제 만들거니까 걱정마세요 ㅎㅎ</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmVcFxgsdiQcYo1dEF1R59uhiqC27tDWPE68bcEyR5Ytd4/image.png</p> <p>이것이바로 콜라를 다시 판매하는 함수입니다!</p> <p>딱봐도 별로 어려울게없죠?? </p> <p>콜라의 가격을 저희의 Smart Contract에 전달해주기. 끝. 입니다 ㅎㅎ</p> <p><br></p> <p>자 이제 가나슈를 실행하고 컨트랙트를 컴파일 해봅시다!</p> <p>다들 기억하시죠?</p> <p>컴파일과 마이그레이트를 한번에!!</p> <p>truffle --migrate --compile-all --reset --network ganache 입니다 ㅎㅎㅎ </p> <p>저는 이게 굉장히 편하더라구요 모든걸 한번에 컴파일겸 초기화겸..등등 다해주니까요</p> <p><br></p> <p>자이제 컴파일도 끝났구 ganache를 실행하고! </p> <p>https://cdn.steemitimages.com/DQmQmk4EZTkwJYkFEpUSkx3rCC9GCHmV1D6Xx27Jep3qn7y/image.png</p> <p>정상적으로 입력한 숫자만큼 콜라가 구매되는걸 확인하실수 있을겁니다!</p> <p><br></p> <p>하지만...</p> <p>https://cdn.steemitimages.com/DQmUEVJ8KQLgnTEiUAZKB3wa4VhJ64UdBLBB22vJC3LgPPQ/image.png</p> <p><br></p> <p>판매를 하려니 이러한 오류가뜨는데.... 모두들 적지않게 당황하셨을거라 봅니다 내가 뭐 잘못코딩했나..</p> <p><br></p> <p>하지만 현재로선 이게 정상입니다 ㅎㅎ 저희는 가스비를 지정해주지 않았거든요!</p> <p>https://cdn.steemitimages.com/DQmWcqP6jzA2dBA1WB5mtDzAQJxK4axWtZPr6oGb3yhqTAJ/image.png</p> <p><br></p> <p>이렇게 App.js sellCoke함수에 가스비를 넉넉하게 잡아주세요 ㅎ 가스비는 트랜잭션을 실행시키기위해 필요한 수수료라는 개념은 다들 아시죠?</p> <p><br></p> <p>가스비에 대해서는 추후 포스팅에서 자세하게 다뤄보도록 할게요!</p> <p><br></p> <p>이상 오늘은 입력받은 수만큼 콜라를구매하고, 판매하는 기능을 구현해보았습니다!</p> <p>입력받은만큼 판매하는 기능은 한번 직접 작성해보기실 권장드립니다!</p> </html> |
| json metadata | {"tags":["blockchain","react","dapp","ethereum","bitcoin"],"image":["https://cdn.steemitimages.com/DQmW3SVPeneUyPT6taNp5VrWxezzH3p6nNUAnWSm6NweCSx/image.png","https://cdn.steemitimages.com/DQmRJF1mbswcq8oy1j2CjkUPwVAQQGdcY88SPNzT5qPJfrx/image.png","https://cdn.steemitimages.com/DQmZN4raR5gqzNcPHjHdnqJoq9SEoHJ8Aigwe25Dp1up3D1/image.png","https://cdn.steemitimages.com/DQmcK8RYRLWvwDwrnvfWXpj14nfayYcqoamfGrSUWujcbPY/image.png","https://cdn.steemitimages.com/DQmShsrhdwFTXYqzmkmh8CuPCnRdUbFf89zcAFEne9cau6J/image.png","https://cdn.steemitimages.com/DQmdzhJirWXNLdAe1RHqM5Z3Wx3Jg2D7nsxysoJLY3Lx6vp/image.png","https://cdn.steemitimages.com/DQmRJ8E85LYMiLHhLDRyDCAMhSHexiXycGgduVUFaJKEdMU/image.png","https://cdn.steemitimages.com/DQmRvVfwssavZCgqsiWsaiQTxwsurCsjPmwcFZn5tnLwzkM/image.png","https://cdn.steemitimages.com/DQmVcFxgsdiQcYo1dEF1R59uhiqC27tDWPE68bcEyR5Ytd4/image.png","https://cdn.steemitimages.com/DQmQmk4EZTkwJYkFEpUSkx3rCC9GCHmV1D6Xx27Jep3qn7y/image.png","https://cdn.steemitimages.com/DQmUEVJ8KQLgnTEiUAZKB3wa4VhJ64UdBLBB22vJC3LgPPQ/image.png","https://cdn.steemitimages.com/DQmWcqP6jzA2dBA1WB5mtDzAQJxK4axWtZPr6oGb3yhqTAJ/image.png"],"app":"steemit/0.1","format":"html"} |
| parent author | |
| parent permlink | blockchain |
| permlink | react-dapp-4-dapp |
| title | react를 활용한 Dapp 만들기(4. 간단한 Dapp 생성+추가기능구현) |
| Transaction Info | Block #28613491/Trx 4db693d3a6b2c00b9475349753f997b84177de5f |
View Raw JSON Data
{
"block": 28613491,
"op": [
"comment",
{
"author": "minhokim",
"body": "<html>\n<p>안녕하세요!</p>\n<p><br></p>\n<p>저번포스팅때는 콜라를 구매하는 간단한 Dapp을 만들어보았었죠 ㅎㅎ</p>\n<p>오늘은 갯수를 입력받아 콜라를 구매하는 기능과, 콜라를 판매하는 기능을 구현해 보겠습니다!</p>\n<p><br></p>\n<p>먼저 갯수를 입력받아 콜라를 구매하는 기능부터 구현해보겠습니다.</p>\n<p><br></p>\n<p>음 저희는 일단 솔리디티 파일먼저 수정하기로 하죠!</p>\n<p> </p>\n<p>function BuyCoke() payable external{<br>\n MyCokeNum[msg.sender]++;;<br>\n}<br>\n<br>\n위에는 기존 솔리디티 파일 구매 함수입니다.</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmW3SVPeneUyPT6taNp5VrWxezzH3p6nNUAnWSm6NweCSx/image.png</p>\n<p><br></p>\n<p>위에사진은 수정된 솔리디티 파일 구매 함수입니다.</p>\n<p>기존에는 버튼한번클릭에 한개씩만 구매할수있었다면, 저희가 수정한 BuyCoke는 프론트엔드 화면에서 갯수를 입력하면, BuyCoke함수가 갯수를 전달받고 MyCokeNum[msg.sender]에 저장시키는 함수로 변경되었습니다!</p>\n<p><br></p>\n<p>이제 App.js를 수정해보도록 하겠습니다. 이부분도 굉장히 간단하니 부담안갖으셔도 될거예요!</p>\n<p><br></p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmRJF1mbswcq8oy1j2CjkUPwVAQQGdcY88SPNzT5qPJfrx/image.png</p>\n<p><br></p>\n<p>자! 매우 간단하게 이와같이 만들고, 텍스트박스에서 입력이 이루어 지도록 하겠습니다.</p>\n<p><br></p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmZN4raR5gqzNcPHjHdnqJoq9SEoHJ8Aigwe25Dp1up3D1/image.png</p>\n<p><br></p>\n<p>텍스트박스에서 입력되어진 숫자를 저장하기위한 num변수를 새로 state에 만들어주었습니다.</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmcK8RYRLWvwDwrnvfWXpj14nfayYcqoamfGrSUWujcbPY/image.png</p>\n<p>화면에 텍스트박스가 나오도록 하나 만들어주도록하죠! input type 안에 value값 onChange값들은 지금은 무시해주세요 ㅎㅎ 앞으로 구현해나갈 기능들입니다!</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmShsrhdwFTXYqzmkmh8CuPCnRdUbFf89zcAFEne9cau6J/image.png</p>\n<p>제가 처음 말씀드렷던대로, react에 대해서 공부를 하셨던 분들이라면 handlechange함수에 대해서 이해를 하고있을거라고 생각되어지지만! 혹시라도 까먹으신분들을 위해 간단히 설명 드리겠습니다.</p>\n<p><br></p>\n<p>저희가 아까 작성한 텍스트박스에 value={this.state.num} onChange={this.handleChange} 이 두개가 명시되어 었었죠?</p>\n<p>handleChange기능을 사용하기위해 미리 코딩을 해둔 상태였습니다.</p>\n<p>여기서 저희가만든 handleChange함수는 텍스트박스에 어떠한 값이 들어오면 num에 그값을 저장시키는 역할을 담당하고 있습니다!.</p>\n<p>이부분 잘 이해가 안가시는분들은 댓글도 좋지만, 제가 처음에 말씀드렸던 velopert님의 강의를 다시한번 보고 오시는걸 추천드리겠습니다.</p>\n<p><br></p>\n<p>자 마지막으로 buyCoke=()=>{} 함수를 수정해주면 끝이 납니다!</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmdzhJirWXNLdAe1RHqM5Z3Wx3Jg2D7nsxysoJLY3Lx6vp/image.png</p>\n<p>buyCoke에서도 두부분이 수정되었죠!</p>\n<p>추가된 this.state.num은 현재 state의 num값을 저희의 컨트랙트로 전달(?)시키는 역할을 합니다!</p>\n<p>아까 수정한 solidity파일을 보시면 BuyCoke함수를 실행시키기 위해서 cokeNum이라는 값을 받아야했었죠?</p>\n<p>그리고 아래는 콜라에대한 값을 지불하는 5*this.state.num 이부분이 변경되었죠 ㅎ</p>\n<p>(콜라가격도 변경시켰답니다..)</p>\n<p><br></p>\n<p>이제 입력받은만큼 콜라를 구매하는 기능은 다끝났습니다!</p>\n<p>콜라를 재판매(?)환불(?) 하는 기능을 작성해보도록 하죠</p>\n<p><br></p>\n<p>저희가 작성한 계약 솔리디티 파일을 다시 열어주세요!</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmRJ8E85LYMiLHhLDRyDCAMhSHexiXycGgduVUFaJKEdMU/image.png</p>\n<p><br></p>\n<p>빨간부분으로 포인트를 준곳이 콜라판매하는 함수입니다.</p>\n<p>cokePrice 즉, 가격을 입력받아와서 내가 가지고있는 콜라양x가격을 sell에 저장을 합니다.</p>\n<p>다음으로 콜라를 팔았으니까, 나의 콜라는 0이 되야겠죠 그래서 0으로 만들어주었구요</p>\n<p>그리고 위에서 계산한 총량을 msg.sender에게 다시 전송을 해주는겁니다</p>\n<p>콜라를 다시 팔았으니 저는 돈을 받아야하니까요 ㅎㅎ</p>\n<p><br></p>\n<p>이제 다시 App.js로 돌아가겠습니다.</p>\n<p>https://cdn.steemitimages.com/DQmRvVfwssavZCgqsiWsaiQTxwsurCsjPmwcFZn5tnLwzkM/image.png</p>\n<p>자 먼저 콜라판마해기 버튼을 만들어줍니다! 안에 sellCoke함수는 이제 만들거니까 걱정마세요 ㅎㅎ</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmVcFxgsdiQcYo1dEF1R59uhiqC27tDWPE68bcEyR5Ytd4/image.png</p>\n<p>이것이바로 콜라를 다시 판매하는 함수입니다!</p>\n<p>딱봐도 별로 어려울게없죠?? </p>\n<p>콜라의 가격을 저희의 Smart Contract에 전달해주기. 끝. 입니다 ㅎㅎ</p>\n<p><br></p>\n<p>자 이제 가나슈를 실행하고 컨트랙트를 컴파일 해봅시다!</p>\n<p>다들 기억하시죠?</p>\n<p>컴파일과 마이그레이트를 한번에!!</p>\n<p>truffle --migrate --compile-all --reset --network ganache 입니다 ㅎㅎㅎ </p>\n<p>저는 이게 굉장히 편하더라구요 모든걸 한번에 컴파일겸 초기화겸..등등 다해주니까요</p>\n<p><br></p>\n<p>자이제 컴파일도 끝났구 ganache를 실행하고! </p>\n<p>https://cdn.steemitimages.com/DQmQmk4EZTkwJYkFEpUSkx3rCC9GCHmV1D6Xx27Jep3qn7y/image.png</p>\n<p>정상적으로 입력한 숫자만큼 콜라가 구매되는걸 확인하실수 있을겁니다!</p>\n<p><br></p>\n<p>하지만...</p>\n<p>https://cdn.steemitimages.com/DQmUEVJ8KQLgnTEiUAZKB3wa4VhJ64UdBLBB22vJC3LgPPQ/image.png</p>\n<p><br></p>\n<p>판매를 하려니 이러한 오류가뜨는데.... 모두들 적지않게 당황하셨을거라 봅니다 내가 뭐 잘못코딩했나..</p>\n<p><br></p>\n<p>하지만 현재로선 이게 정상입니다 ㅎㅎ 저희는 가스비를 지정해주지 않았거든요!</p>\n<p>https://cdn.steemitimages.com/DQmWcqP6jzA2dBA1WB5mtDzAQJxK4axWtZPr6oGb3yhqTAJ/image.png</p>\n<p><br></p>\n<p>이렇게 App.js sellCoke함수에 가스비를 넉넉하게 잡아주세요 ㅎ 가스비는 트랜잭션을 실행시키기위해 필요한 수수료라는 개념은 다들 아시죠?</p>\n<p><br></p>\n<p>가스비에 대해서는 추후 포스팅에서 자세하게 다뤄보도록 할게요!</p>\n<p><br></p>\n<p>이상 오늘은 입력받은 수만큼 콜라를구매하고, 판매하는 기능을 구현해보았습니다!</p>\n<p>입력받은만큼 판매하는 기능은 한번 직접 작성해보기실 권장드립니다!</p>\n</html>",
"json_metadata": "{\"tags\":[\"blockchain\",\"react\",\"dapp\",\"ethereum\",\"bitcoin\"],\"image\":[\"https://cdn.steemitimages.com/DQmW3SVPeneUyPT6taNp5VrWxezzH3p6nNUAnWSm6NweCSx/image.png\",\"https://cdn.steemitimages.com/DQmRJF1mbswcq8oy1j2CjkUPwVAQQGdcY88SPNzT5qPJfrx/image.png\",\"https://cdn.steemitimages.com/DQmZN4raR5gqzNcPHjHdnqJoq9SEoHJ8Aigwe25Dp1up3D1/image.png\",\"https://cdn.steemitimages.com/DQmcK8RYRLWvwDwrnvfWXpj14nfayYcqoamfGrSUWujcbPY/image.png\",\"https://cdn.steemitimages.com/DQmShsrhdwFTXYqzmkmh8CuPCnRdUbFf89zcAFEne9cau6J/image.png\",\"https://cdn.steemitimages.com/DQmdzhJirWXNLdAe1RHqM5Z3Wx3Jg2D7nsxysoJLY3Lx6vp/image.png\",\"https://cdn.steemitimages.com/DQmRJ8E85LYMiLHhLDRyDCAMhSHexiXycGgduVUFaJKEdMU/image.png\",\"https://cdn.steemitimages.com/DQmRvVfwssavZCgqsiWsaiQTxwsurCsjPmwcFZn5tnLwzkM/image.png\",\"https://cdn.steemitimages.com/DQmVcFxgsdiQcYo1dEF1R59uhiqC27tDWPE68bcEyR5Ytd4/image.png\",\"https://cdn.steemitimages.com/DQmQmk4EZTkwJYkFEpUSkx3rCC9GCHmV1D6Xx27Jep3qn7y/image.png\",\"https://cdn.steemitimages.com/DQmUEVJ8KQLgnTEiUAZKB3wa4VhJ64UdBLBB22vJC3LgPPQ/image.png\",\"https://cdn.steemitimages.com/DQmWcqP6jzA2dBA1WB5mtDzAQJxK4axWtZPr6oGb3yhqTAJ/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "react-dapp-4-dapp",
"title": "react를 활용한 Dapp 만들기(4. 간단한 Dapp 생성+추가기능구현)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-16T12:22:21",
"trx_id": "4db693d3a6b2c00b9475349753f997b84177de5f",
"trx_in_block": 8,
"virtual_op": 0
}minhokimupvoted (100.00%) @minhokim / react-dapp-3-dapp2018/12/11 06:16:21
minhokimupvoted (100.00%) @minhokim / react-dapp-3-dapp
2018/12/11 06:16:21
| author | minhokim |
| permlink | react-dapp-3-dapp |
| voter | minhokim |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28462275/Trx 65268b4c183c93cc80279edbd27b1476ef9af25d |
View Raw JSON Data
{
"block": 28462275,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-3-dapp",
"voter": "minhokim",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-11T06:16:21",
"trx_id": "65268b4c183c93cc80279edbd27b1476ef9af25d",
"trx_in_block": 14,
"virtual_op": 0
}xbiidxupvoted (100.00%) @minhokim / react-dapp-12018/12/10 03:15:42
xbiidxupvoted (100.00%) @minhokim / react-dapp-1
2018/12/10 03:15:42
| author | minhokim |
| permlink | react-dapp-1 |
| voter | xbiidx |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28429885/Trx 891017155adcfe02d58540ffea1a4f23aa8b7249 |
View Raw JSON Data
{
"block": 28429885,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-1",
"voter": "xbiidx",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-10T03:15:42",
"trx_id": "891017155adcfe02d58540ffea1a4f23aa8b7249",
"trx_in_block": 33,
"virtual_op": 0
}xbiidxupvoted (100.00%) @minhokim / 78xfhs-react-dapp-12018/12/10 03:15:33
xbiidxupvoted (100.00%) @minhokim / 78xfhs-react-dapp-1
2018/12/10 03:15:33
| author | minhokim |
| permlink | 78xfhs-react-dapp-1 |
| voter | xbiidx |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28429882/Trx 1cb64e5849c04b71e0194daa281b087299dced5d |
View Raw JSON Data
{
"block": 28429882,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "78xfhs-react-dapp-1",
"voter": "xbiidx",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-10T03:15:33",
"trx_id": "1cb64e5849c04b71e0194daa281b087299dced5d",
"trx_in_block": 31,
"virtual_op": 0
}xbiidxupvoted (100.00%) @minhokim / react-dapp-3-dapp2018/12/10 03:15:21
xbiidxupvoted (100.00%) @minhokim / react-dapp-3-dapp
2018/12/10 03:15:21
| author | minhokim |
| permlink | react-dapp-3-dapp |
| voter | xbiidx |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28429878/Trx 072499331b29d5318a0ea13c9c2e5e3fece6a495 |
View Raw JSON Data
{
"block": 28429878,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-3-dapp",
"voter": "xbiidx",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-12-10T03:15:21",
"trx_id": "072499331b29d5318a0ea13c9c2e5e3fece6a495",
"trx_in_block": 19,
"virtual_op": 0
}2018/12/10 03:15:00
2018/12/10 03:15:00
| author | xbiidx |
| body | 좋은 정보 감사합니다 :) |
| json metadata | {"tags":["blockchain"],"app":"steemit/0.1"} |
| parent author | minhokim |
| parent permlink | react-dapp-3-dapp |
| permlink | re-minhokim-react-dapp-3-dapp-20181210t031458147z |
| title | |
| Transaction Info | Block #28429871/Trx 0a4f29390e50ed4857799186c41294dca5601808 |
View Raw JSON Data
{
"block": 28429871,
"op": [
"comment",
{
"author": "xbiidx",
"body": "좋은 정보 감사합니다 :)",
"json_metadata": "{\"tags\":[\"blockchain\"],\"app\":\"steemit/0.1\"}",
"parent_author": "minhokim",
"parent_permlink": "react-dapp-3-dapp",
"permlink": "re-minhokim-react-dapp-3-dapp-20181210t031458147z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2018-12-10T03:15:00",
"trx_id": "0a4f29390e50ed4857799186c41294dca5601808",
"trx_in_block": 2,
"virtual_op": 0
}2018/12/09 09:07:00
2018/12/09 09:07:00
| amount | 0.001 SBD |
| from | allaz |
| memo | Promote your post. Your post will be min. 10 resteemed with over 13000 followers and min. 25 Upvote Different account (5000 STEEM POWER). Your post will be more popular and you will find new friends. Send 0.5 SBD or STEEM to @allaz (post URL as memo ) Service Active. |
| to | minhokim |
| Transaction Info | Block #28408119/Trx cc82a9739db80f02e032505460828efd879c765c |
View Raw JSON Data
{
"block": 28408119,
"op": [
"transfer",
{
"amount": "0.001 SBD",
"from": "allaz",
"memo": "Promote your post. Your post will be min. 10 resteemed with over 13000 followers and min. 25 Upvote Different account (5000 STEEM POWER). Your post will be more popular and you will find new friends. Send 0.5 SBD or STEEM to @allaz (post URL as memo ) Service Active.",
"to": "minhokim"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-09T09:07:00",
"trx_id": "cc82a9739db80f02e032505460828efd879c765c",
"trx_in_block": 1,
"virtual_op": 0
}microbotupvoted (5.00%) @minhokim / react-dapp-3-dapp2018/12/09 09:04:27
microbotupvoted (5.00%) @minhokim / react-dapp-3-dapp
2018/12/09 09:04:27
| author | minhokim |
| permlink | react-dapp-3-dapp |
| voter | microbot |
| weight | 500 (5.00%) |
| Transaction Info | Block #28408068/Trx acc38719a50389fa4137b1fbddd4c14496185f4c |
View Raw JSON Data
{
"block": 28408068,
"op": [
"vote",
{
"author": "minhokim",
"permlink": "react-dapp-3-dapp",
"voter": "microbot",
"weight": 500
}
],
"op_in_trx": 0,
"timestamp": "2018-12-09T09:04:27",
"trx_id": "acc38719a50389fa4137b1fbddd4c14496185f4c",
"trx_in_block": 15,
"virtual_op": 0
}minhokimpublished a new post: react-dapp-3-dapp2018/12/09 09:02:54
minhokimpublished a new post: react-dapp-3-dapp
2018/12/09 09:02:54
| author | minhokim |
| body | <html> <p><br></p> <p>안녕하세요</p> <p>오늘은 Private Ethereum Network를 이용한 간단한 물건 구매 Dapp을 만들어볼 예정입니다.</p> <p><br></p> <p>그럼 시작하겠습니다.</p> <p><br></p> <p>전편에서 만든 코드를 열고 App.js에 있는 코드를 다 지워주세요!</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmQFrZ79iZwzDXR3MP9ekLZx2MpSmWQWg8oCpa7dVCfQZV/image.png</p> <p><br></p> <p>그다음으로, build/contracts폴더와 contracts폴더 안에있는 SimpleStorage.json, SimpleStorage.sol</p> <p>파일자체를 지워주세요 저희는 새로운 컨트랙트를 생성할거랍니다.</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmZ9VUjNfofPwr9pJSFVypbyU2YBa9VFS6YmcQNXb5q2ww/image.png</p> <p><br></p> <p>자이제 Smart Contract부터 코드를 작성해보겠습니다.</p> <p>매우 간단한 물건 구매기능을 가진 프로젝트이므로 쉽게 따라하실수 있을겁니다.</p> <p><br></p> <p>contracts 폴더안에 Store.sol 파일을 하나 생성해주세요. </p> <p><br></p> <p>https://cdn.steemitimages.com/DQmVvuBchvRGv1xaZiw1BiDXfHc7rxxYvnu5DyrCBB4AX6L/image.png</p> <p><br></p> <p>먼저 위와같이 코드를 작성해주시고, mapping에 대해서 설명해드리겠습니다.</p> <p>간단한 이해를 위해서, mapping는 배열이라고 생각하시면 되겠습니다</p> <p>mappig(address=>uint)MyCokeNum</p> <p>MyCokeNum[내 이더리움 계좌 주소] = <strong>숫자</strong></p> <p>이런식으로 저장이 되어있는 형태라고 생각하시면 이해하시기 편하실거예요.</p> <p>위에서 <strong>숫자</strong>는 앞으로 내가 콜라를 구매할때마다 한개씩 증가가 될겁니다.</p> <p><br></p> <p>다음으로, 구매함수를 작성할텐데요, 이부분도 어렵지 않습니다!</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmX6NgbcPT796AcMxKcWsXq7RnTuLnYCXMS3jQjYRuERS5/image.png</p> <p><br></p> <p>아래와 같이 작성해주시면 콜라구매, 내가 구매한 콜라 개수를 반환받는 함수 작성이 끝났습니다.</p> <p>위에서 mapping에 대해서 이해하셨다면 BuyCoke함수, GetMyCokeNum함수에 대해 쉽게 이해하실거라 생각됩니다.</p> <p>mapping에 대해 이해가 잘가지 않는 분은 댓글남겨주시면 답변드릴게요!</p> <p>그리고 contract코드작성 마지막으로, migrations폴더에있는 2_deploy_contract를 수정해주겠습니다</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmafrD8krSU7xr2Zpbgnue7J6zPqJhD4nNtFASviEongCk/image.png</p> <p><br></p> <p>다음으로 ganache를 실행시켜주시고, cmd이나 power shell 에서 truffle migrate --compile-all --reset --network --ganache를 입력함으로써, ganach네트워크를 사용한 migrate와 compile을 동시에 진행하겠습니다.</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmbNnRafExs5FSi4ZjDVMVFW63A7TQFBc8kyp4mwaHhApL/image.png</p> <p><br></p> <p>cmd창에 위와같은 메시지와함께 ganache 첫번째계정에서 이더가 조금 줄었다면 성공적으로 배포가 완료된것입니다!.</p> <p><br></p> <p>이제 다음으로 react를 이용해 프론트엔드 코드를 작성해보겠습니다.</p> <p>아까 코드를 다 삭제했던 App.js파일에 코드를 작성할겁니다. 나중에 이것보다 조금 더 복잡합 프로젝트를 진행 할때는 새로운 component별로 폴더를 나눠서 작성해주시는게 훨씬 좋을겁니다!</p> <p><br></p> <p>일단 지금은 귀찮고.. 코드도 몇줄 안되니 그냥 App.js에 코드를 작성하겠습니다.</p> <p>https://cdn.steemitimages.com/DQmVxaGSzBLqCiTCnsjSL7vjbGS9aFqzJwNmnYRw1qAucZt/image.png</p> <p><br></p> <p>위와같이 코드를 작성해주시면 됩니다!. 코드에 대해서 설명을 드리자면</p> <p>기본적으로 react로 생성된 프로젝트가 실행되면 <strong>constructor</strong> -> <strong>componentWillMount -> render -> componentDidMount</strong> 방식으로 렌더링이 이루어지게 되는데 <strong>componentWillMount </strong>에서 web3를 불러와서 state에 저장하고, 앞으로 state를 통해 web3 사용하겠다는 의미입니다.</p> <p>그리고, </p> <p>instantiateContract함수에서 Store.sol파일을 불러와 현재의 web3(저희는 메타마스크)에서 사용하겠다는 의미입니다.</p> <p>https://cdn.steemitimages.com/DQmPuvwUNJvojcHaqrnncdw8deKMqw4gHbV7gT3qq6koFgW/image.png</p> <p><br></p> <p>state에 instance상태와 account상태를 저장하도록 추가 코드를 작성해주시고, </p> <p>instantiateContract함수 아래쪽에 작성된 코드에선 배포된 인스턴스를 state의 storeInstance에 저장, web3에서 사용되는 첫번째 계정을 MyAccount에 저장합니다.</p> <p><br></p> <p>다음으로, 콜라구매와 콜래개수 가져오는 함수를 작성하겠습니다.</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmRYMG22bJjzfD7d3nTzVPY4ycKAWE87rW9rLhk3Mx8qdM/image.png</p> <p><br></p> <p>state에 새로운 변수를 하나 추가해줍시다. 배포된 계약에 저장되어있는 나의 콜라개수를 가져와, 저 변수에 저장할 거예요.</p> <p><br></p> <p>그리고 buyCoke, getMyCoke 함수를 새로 생성해줄게요 !</p> <p>과정을 설명드리면 </p> <p>첫번째로, this.state.storeInstance를 이용해 저희 smart contract에 접근을 합니다.</p> <p>두번째로, solidity에서 작성한 함수인 buyCoke기억나시죠? 그함수를 사용하겠다는 의미이고</p> <p>세번째로, from : 어떤계좌에서 송금이 이루어질것인가. value는 this.state.web3.toWei(10,"ether")라는 코드를 통해 buyCoke 함수가 한번 호출될때 10개의 이더를 지불할것이다 라는 코드입니다.</p> <p><br></p> <p>getMyCoke도 비슷합니다. 전에 만들어둔 myCokeNum변수에 계약에 저장된 나의 콜라개수를 저장을 하겠다는 의미이죠</p> <p><br></p> <p>자이제 간단한 프론트엔드 ui를 만들어보도록 하겠습니다.</p> <p>https://cdn.steemitimages.com/DQmRi2HkC2nWUZgixea7SgkuUhdrQXfbQ9gPcp8SjrQwNaP/image.png</p> <p><br></p> <p>간단 dapp만들기 소스코드 부분은 완성입니다! 잘 작동하나 확인해보시죠!</p> <p>cmd나 power shell에서 npm start로 프로젝트를 실행하겠습니다</p> <p><br></p> <p>https://cdn.steemitimages.com/DQmaugAPqsQyFcYHWXejXteohRp5RJkbTHFMFYpjG5cV5nr/image.png</p> <p><br></p> <p><br></p> <p>굉장히 잘 작동하는걸 확인하실수 있습니다! 음 다음시간에는 조금더 기능을 추가한 Dapp를 만들어보도록 하겠습니다. 잘 이해가 안되거나 질문있으시면 댓글부탁드려요!</p> <p>아래 코드 올려드리겠습니다 ㅎ</p> <p><br></p> <p> </p> <p>import React, { Component } from 'react'<br> import Store from '../build/contracts/Store.json'<br> import getWeb3 from './utils/getWeb3'<br> <br> </p> <p>class App extends Component {<br> constructor(props) {<br> super(props)<br> <br> this.state = {<br> web3: null,<br> storeInstance:null, //storeInstance 추가<br> myAccount:null, //myAccount 추가<br> <br> //새로운추가 코드<br> myCokeNum:0 // 나의 콜라 개수저장 변수 myCokeNum추가<br> }<br> }<br> <br> componentWillMount() {<br> getWeb3<br> .then(results => {<br> this.setState({<br> web3: results.web3<br> })<br> <br> this.instantiateContract()<br> })<br> .catch(() => {<br> console.log('Error finding web3.') <br> })<br> }<br> <br> instantiateContract() {<br> <br> </p> <p>const contract = require('truffle-contract')<br> const simpleStore = contract(Store)<br> simpleStore.setProvider(this.state.web3.currentProvider)<br> <br> //아래를 추가해주시면 됩니다.<br> this.state.web3.eth.getAccounts((error,accounts)=>{<br> if(!error){<br> simpleStore.deployed().then(instance=>{<br> this.setState({storeInstance:instance,myAccount:accounts[0]})<br> <br> //새로운 추가 코드<br> this.getMyCoke();<br> <br> })<br> }<br> })<br> <br> }<br> <br> buyCoke=()=>{<br> console.log("##성공")<br> this.state.storeInstance.BuyCoke({<br> from:this.state.myAccount,<br> value:this.state.web3.toWei(20,"ether")<br> })<br> }<br> <br> getMyCoke=()=>{<br> this.state.storeInstance.GetMyCokeNum().then(result=>{<br> this.setState({myCokeNum: result.toNumber()});<br> });<br> }<br> <br> </p> <p>render() {<br> return (<br> <div><br> <h1>콜라 구매 Dapp</h1><br> <div>콜라 구매하기 : <button onClick={this.buyCoke}>클릭</button></div><br> <div>나의 콜라 개수 : {this.state.myCokeNum}</div><br> </div><br> );<br> }<br> }<br> <br> export default App<br> <br> </p> </html> |
| json metadata | {"tags":["blockchain","react","dapp","ethereum","bitcoin"],"image":["https://cdn.steemitimages.com/DQmQFrZ79iZwzDXR3MP9ekLZx2MpSmWQWg8oCpa7dVCfQZV/image.png","https://cdn.steemitimages.com/DQmZ9VUjNfofPwr9pJSFVypbyU2YBa9VFS6YmcQNXb5q2ww/image.png","https://cdn.steemitimages.com/DQmVvuBchvRGv1xaZiw1BiDXfHc7rxxYvnu5DyrCBB4AX6L/image.png","https://cdn.steemitimages.com/DQmX6NgbcPT796AcMxKcWsXq7RnTuLnYCXMS3jQjYRuERS5/image.png","https://cdn.steemitimages.com/DQmafrD8krSU7xr2Zpbgnue7J6zPqJhD4nNtFASviEongCk/image.png","https://cdn.steemitimages.com/DQmbNnRafExs5FSi4ZjDVMVFW63A7TQFBc8kyp4mwaHhApL/image.png","https://cdn.steemitimages.com/DQmVxaGSzBLqCiTCnsjSL7vjbGS9aFqzJwNmnYRw1qAucZt/image.png","https://cdn.steemitimages.com/DQmPuvwUNJvojcHaqrnncdw8deKMqw4gHbV7gT3qq6koFgW/image.png","https://cdn.steemitimages.com/DQmRYMG22bJjzfD7d3nTzVPY4ycKAWE87rW9rLhk3Mx8qdM/image.png","https://cdn.steemitimages.com/DQmRi2HkC2nWUZgixea7SgkuUhdrQXfbQ9gPcp8SjrQwNaP/image.png","https://cdn.steemitimages.com/DQmaugAPqsQyFcYHWXejXteohRp5RJkbTHFMFYpjG5cV5nr/image.png"],"app":"steemit/0.1","format":"html"} |
| parent author | |
| parent permlink | blockchain |
| permlink | react-dapp-3-dapp |
| title | react를 활용한 Dapp 만들기(3. 간단한 Dapp 생성) |
| Transaction Info | Block #28408037/Trx 46da05882fb7240cabc1f37573f0898c2088fb9e |
View Raw JSON Data
{
"block": 28408037,
"op": [
"comment",
{
"author": "minhokim",
"body": "<html>\n<p><br></p>\n<p>안녕하세요</p>\n<p>오늘은 Private Ethereum Network를 이용한 간단한 물건 구매 Dapp을 만들어볼 예정입니다.</p>\n<p><br></p>\n<p>그럼 시작하겠습니다.</p>\n<p><br></p>\n<p>전편에서 만든 코드를 열고 App.js에 있는 코드를 다 지워주세요!</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmQFrZ79iZwzDXR3MP9ekLZx2MpSmWQWg8oCpa7dVCfQZV/image.png</p>\n<p><br></p>\n<p>그다음으로, build/contracts폴더와 contracts폴더 안에있는 SimpleStorage.json, SimpleStorage.sol</p>\n<p>파일자체를 지워주세요 저희는 새로운 컨트랙트를 생성할거랍니다.</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmZ9VUjNfofPwr9pJSFVypbyU2YBa9VFS6YmcQNXb5q2ww/image.png</p>\n<p><br></p>\n<p>자이제 Smart Contract부터 코드를 작성해보겠습니다.</p>\n<p>매우 간단한 물건 구매기능을 가진 프로젝트이므로 쉽게 따라하실수 있을겁니다.</p>\n<p><br></p>\n<p>contracts 폴더안에 Store.sol 파일을 하나 생성해주세요. </p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmVvuBchvRGv1xaZiw1BiDXfHc7rxxYvnu5DyrCBB4AX6L/image.png</p>\n<p><br></p>\n<p>먼저 위와같이 코드를 작성해주시고, mapping에 대해서 설명해드리겠습니다.</p>\n<p>간단한 이해를 위해서, mapping는 배열이라고 생각하시면 되겠습니다</p>\n<p>mappig(address=>uint)MyCokeNum</p>\n<p>MyCokeNum[내 이더리움 계좌 주소] = <strong>숫자</strong></p>\n<p>이런식으로 저장이 되어있는 형태라고 생각하시면 이해하시기 편하실거예요.</p>\n<p>위에서 <strong>숫자</strong>는 앞으로 내가 콜라를 구매할때마다 한개씩 증가가 될겁니다.</p>\n<p><br></p>\n<p>다음으로, 구매함수를 작성할텐데요, 이부분도 어렵지 않습니다!</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmX6NgbcPT796AcMxKcWsXq7RnTuLnYCXMS3jQjYRuERS5/image.png</p>\n<p><br></p>\n<p>아래와 같이 작성해주시면 콜라구매, 내가 구매한 콜라 개수를 반환받는 함수 작성이 끝났습니다.</p>\n<p>위에서 mapping에 대해서 이해하셨다면 BuyCoke함수, GetMyCokeNum함수에 대해 쉽게 이해하실거라 생각됩니다.</p>\n<p>mapping에 대해 이해가 잘가지 않는 분은 댓글남겨주시면 답변드릴게요!</p>\n<p>그리고 contract코드작성 마지막으로, migrations폴더에있는 2_deploy_contract를 수정해주겠습니다</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmafrD8krSU7xr2Zpbgnue7J6zPqJhD4nNtFASviEongCk/image.png</p>\n<p><br></p>\n<p>다음으로 ganache를 실행시켜주시고, cmd이나 power shell 에서 truffle migrate --compile-all --reset --network --ganache를 입력함으로써, ganach네트워크를 사용한 migrate와 compile을 동시에 진행하겠습니다.</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmbNnRafExs5FSi4ZjDVMVFW63A7TQFBc8kyp4mwaHhApL/image.png</p>\n<p><br></p>\n<p>cmd창에 위와같은 메시지와함께 ganache 첫번째계정에서 이더가 조금 줄었다면 성공적으로 배포가 완료된것입니다!.</p>\n<p><br></p>\n<p>이제 다음으로 react를 이용해 프론트엔드 코드를 작성해보겠습니다.</p>\n<p>아까 코드를 다 삭제했던 App.js파일에 코드를 작성할겁니다. 나중에 이것보다 조금 더 복잡합 프로젝트를 진행 할때는 새로운 component별로 폴더를 나눠서 작성해주시는게 훨씬 좋을겁니다!</p>\n<p><br></p>\n<p>일단 지금은 귀찮고.. 코드도 몇줄 안되니 그냥 App.js에 코드를 작성하겠습니다.</p>\n<p>https://cdn.steemitimages.com/DQmVxaGSzBLqCiTCnsjSL7vjbGS9aFqzJwNmnYRw1qAucZt/image.png</p>\n<p><br></p>\n<p>위와같이 코드를 작성해주시면 됩니다!. 코드에 대해서 설명을 드리자면</p>\n<p>기본적으로 react로 생성된 프로젝트가 실행되면 <strong>constructor</strong> -> <strong>componentWillMount -> render -> componentDidMount</strong> 방식으로 렌더링이 이루어지게 되는데 <strong>componentWillMount </strong>에서 web3를 불러와서 state에 저장하고, 앞으로 state를 통해 web3 사용하겠다는 의미입니다.</p>\n<p>그리고, </p>\n<p>instantiateContract함수에서 Store.sol파일을 불러와 현재의 web3(저희는 메타마스크)에서 사용하겠다는 의미입니다.</p>\n<p>https://cdn.steemitimages.com/DQmPuvwUNJvojcHaqrnncdw8deKMqw4gHbV7gT3qq6koFgW/image.png</p>\n<p><br></p>\n<p>state에 instance상태와 account상태를 저장하도록 추가 코드를 작성해주시고, </p>\n<p>instantiateContract함수 아래쪽에 작성된 코드에선 배포된 인스턴스를 state의 storeInstance에 저장, web3에서 사용되는 첫번째 계정을 MyAccount에 저장합니다.</p>\n<p><br></p>\n<p>다음으로, 콜라구매와 콜래개수 가져오는 함수를 작성하겠습니다.</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmRYMG22bJjzfD7d3nTzVPY4ycKAWE87rW9rLhk3Mx8qdM/image.png</p>\n<p><br></p>\n<p>state에 새로운 변수를 하나 추가해줍시다. 배포된 계약에 저장되어있는 나의 콜라개수를 가져와, 저 변수에 저장할 거예요.</p>\n<p><br></p>\n<p>그리고 buyCoke, getMyCoke 함수를 새로 생성해줄게요 !</p>\n<p>과정을 설명드리면 </p>\n<p>첫번째로, this.state.storeInstance를 이용해 저희 smart contract에 접근을 합니다.</p>\n<p>두번째로, solidity에서 작성한 함수인 buyCoke기억나시죠? 그함수를 사용하겠다는 의미이고</p>\n<p>세번째로, from : 어떤계좌에서 송금이 이루어질것인가. value는 this.state.web3.toWei(10,\"ether\")라는 코드를 통해 buyCoke 함수가 한번 호출될때 10개의 이더를 지불할것이다 라는 코드입니다.</p>\n<p><br></p>\n<p>getMyCoke도 비슷합니다. 전에 만들어둔 myCokeNum변수에 계약에 저장된 나의 콜라개수를 저장을 하겠다는 의미이죠</p>\n<p><br></p>\n<p>자이제 간단한 프론트엔드 ui를 만들어보도록 하겠습니다.</p>\n<p>https://cdn.steemitimages.com/DQmRi2HkC2nWUZgixea7SgkuUhdrQXfbQ9gPcp8SjrQwNaP/image.png</p>\n<p><br></p>\n<p>간단 dapp만들기 소스코드 부분은 완성입니다! 잘 작동하나 확인해보시죠!</p>\n<p>cmd나 power shell에서 npm start로 프로젝트를 실행하겠습니다</p>\n<p><br></p>\n<p>https://cdn.steemitimages.com/DQmaugAPqsQyFcYHWXejXteohRp5RJkbTHFMFYpjG5cV5nr/image.png</p>\n<p><br></p>\n<p><br></p>\n<p>굉장히 잘 작동하는걸 확인하실수 있습니다! 음 다음시간에는 조금더 기능을 추가한 Dapp를 만들어보도록 하겠습니다. 잘 이해가 안되거나 질문있으시면 댓글부탁드려요!</p>\n<p>아래 코드 올려드리겠습니다 ㅎ</p>\n<p><br></p>\n<p> </p>\n<p>import React, { Component } from 'react'<br>\nimport Store from '../build/contracts/Store.json'<br>\nimport getWeb3 from './utils/getWeb3'<br>\n<br>\n</p>\n<p>class App extends Component {<br>\n constructor(props) {<br>\n super(props)<br>\n<br>\n this.state = {<br>\n web3: null,<br>\n storeInstance:null, //storeInstance 추가<br>\n myAccount:null, //myAccount 추가<br>\n<br>\n //새로운추가 코드<br>\n myCokeNum:0 // 나의 콜라 개수저장 변수 myCokeNum추가<br>\n }<br>\n }<br>\n<br>\n componentWillMount() {<br>\n getWeb3<br>\n .then(results => {<br>\n this.setState({<br>\n web3: results.web3<br>\n })<br>\n<br>\n this.instantiateContract()<br>\n })<br>\n .catch(() => {<br>\n console.log('Error finding web3.') <br>\n })<br>\n }<br>\n<br>\n instantiateContract() {<br>\n<br>\n</p>\n<p>const contract = require('truffle-contract')<br>\n const simpleStore = contract(Store)<br>\n simpleStore.setProvider(this.state.web3.currentProvider)<br>\n<br>\n //아래를 추가해주시면 됩니다.<br>\n this.state.web3.eth.getAccounts((error,accounts)=>{<br>\n if(!error){<br>\n simpleStore.deployed().then(instance=>{<br>\n this.setState({storeInstance:instance,myAccount:accounts[0]})<br>\n <br>\n //새로운 추가 코드<br>\n this.getMyCoke();<br>\n <br>\n })<br>\n }<br>\n })<br>\n <br>\n }<br>\n<br>\n buyCoke=()=>{<br>\n console.log(\"##성공\")<br>\n this.state.storeInstance.BuyCoke({<br>\n from:this.state.myAccount,<br>\n value:this.state.web3.toWei(20,\"ether\")<br>\n })<br>\n }<br>\n<br>\n getMyCoke=()=>{<br>\n this.state.storeInstance.GetMyCokeNum().then(result=>{<br>\n this.setState({myCokeNum: result.toNumber()});<br>\n });<br>\n }<br>\n<br>\n</p>\n<p>render() {<br>\n return (<br>\n <div><br>\n <h1>콜라 구매 Dapp</h1><br>\n <div>콜라 구매하기 : <button onClick={this.buyCoke}>클릭</button></div><br>\n <div>나의 콜라 개수 : {this.state.myCokeNum}</div><br>\n </div><br>\n );<br>\n }<br>\n}<br>\n<br>\nexport default App<br>\n<br>\n</p>\n</html>",
"json_metadata": "{\"tags\":[\"blockchain\",\"react\",\"dapp\",\"ethereum\",\"bitcoin\"],\"image\":[\"https://cdn.steemitimages.com/DQmQFrZ79iZwzDXR3MP9ekLZx2MpSmWQWg8oCpa7dVCfQZV/image.png\",\"https://cdn.steemitimages.com/DQmZ9VUjNfofPwr9pJSFVypbyU2YBa9VFS6YmcQNXb5q2ww/image.png\",\"https://cdn.steemitimages.com/DQmVvuBchvRGv1xaZiw1BiDXfHc7rxxYvnu5DyrCBB4AX6L/image.png\",\"https://cdn.steemitimages.com/DQmX6NgbcPT796AcMxKcWsXq7RnTuLnYCXMS3jQjYRuERS5/image.png\",\"https://cdn.steemitimages.com/DQmafrD8krSU7xr2Zpbgnue7J6zPqJhD4nNtFASviEongCk/image.png\",\"https://cdn.steemitimages.com/DQmbNnRafExs5FSi4ZjDVMVFW63A7TQFBc8kyp4mwaHhApL/image.png\",\"https://cdn.steemitimages.com/DQmVxaGSzBLqCiTCnsjSL7vjbGS9aFqzJwNmnYRw1qAucZt/image.png\",\"https://cdn.steemitimages.com/DQmPuvwUNJvojcHaqrnncdw8deKMqw4gHbV7gT3qq6koFgW/image.png\",\"https://cdn.steemitimages.com/DQmRYMG22bJjzfD7d3nTzVPY4ycKAWE87rW9rLhk3Mx8qdM/image.png\",\"https://cdn.steemitimages.com/DQmRi2HkC2nWUZgixea7SgkuUhdrQXfbQ9gPcp8SjrQwNaP/image.png\",\"https://cdn.steemitimages.com/DQmaugAPqsQyFcYHWXejXteohRp5RJkbTHFMFYpjG5cV5nr/image.png\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}",
"parent_author": "",
"parent_permlink": "blockchain",
"permlink": "react-dapp-3-dapp",
"title": "react를 활용한 Dapp 만들기(3. 간단한 Dapp 생성)"
}
],
"op_in_trx": 0,
"timestamp": "2018-12-09T09:02:54",
"trx_id": "46da05882fb7240cabc1f37573f0898c2088fb9e",
"trx_in_block": 6,
"virtual_op": 0
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress0.00%
{
"voting_manabar": {
"current_mana": 1953311140,
"last_update_time": 1588942782
},
"downvote_manabar": {
"current_mana": 488327785,
"last_update_time": 1588942782
},
"rc_account": {
"account": "minhokim",
"max_rc": "7995026934",
"max_rc_creation_adjustment": {
"amount": "6041715794",
"nai": "@@000000037",
"precision": 6
},
"rc_manabar": {
"current_mana": "15989798166",
"last_update_time": 1588942782
}
}
}Account Metadata
| POSTING JSON METADATA | |
| profile | {"location":"Seoul","version":2} |
| JSON METADATA | |
| profile | {"location":"Seoul","profile_image":"https://cdn.steemitimages.com/DQmdJt1ro3gTnDxnCVBD2BzkD39o99eJuWAwT8CcFUBxn9f/%EC%82%AC%EC%A7%84.jpg"} |
{
"posting_json_metadata": {
"profile": {
"location": "Seoul",
"version": 2
}
},
"json_metadata": {
"profile": {
"location": "Seoul",
"profile_image": "https://cdn.steemitimages.com/DQmdJt1ro3gTnDxnCVBD2BzkD39o99eJuWAwT8CcFUBxn9f/%EC%82%AC%EC%A7%84.jpg"
}
}
}Auth Keys
Owner
Single Signature
Public Keys
STM6bkJsEJFrQNiHoNL9oewARAB6xMcC31bSadNBBEtpgMayvJhNH1/1
Active
Single Signature
Public Keys
STM7fwUDBgZm7FF212GsSKh8UAMxUNki8MNrzt7wiA2LiDVkSxpxR1/1
Posting
Single Signature
Public Keys
STM6oB3ZVWMFJFe9vUE7pmTN7yykBfNtrfSnxFNwhSdutuYM5cLef1/1
App Permissions
@dtube.app1/1
Memo
STM77zg5sAJTNXoNp8Tr4YJjhSDF8GBiSdmZaDcdbg8YnZYKqDGu4
{
"owner": {
"account_auths": [],
"key_auths": [
[
"STM6bkJsEJFrQNiHoNL9oewARAB6xMcC31bSadNBBEtpgMayvJhNH",
1
]
],
"weight_threshold": 1
},
"active": {
"account_auths": [],
"key_auths": [
[
"STM7fwUDBgZm7FF212GsSKh8UAMxUNki8MNrzt7wiA2LiDVkSxpxR",
1
]
],
"weight_threshold": 1
},
"posting": {
"account_auths": [
[
"dtube.app",
1
]
],
"key_auths": [
[
"STM6oB3ZVWMFJFe9vUE7pmTN7yykBfNtrfSnxFNwhSdutuYM5cLef",
1
]
],
"weight_threshold": 1
},
"memo": "STM77zg5sAJTNXoNp8Tr4YJjhSDF8GBiSdmZaDcdbg8YnZYKqDGu4"
}Witness Votes
0 / 30
No active witness votes.
[]