2ํŽธ์— ์ด์–ด IBM Blockchain Platform(์ดํ•˜ IBP) Extension for VS Code ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

3ํŽธ์—์„œ๋Š” IBP Extension for VS Code๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์•„๋ž˜ ์ˆœ์„œ์— ๋”ฐ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
(ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ํ…Œ์ŠคํŠธ ๋ถ€๋ถ„์€ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค)

1. ์ฒด์ธ์ฝ”๋“œ(SmartContract) ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
2. ์ฒด์ธ์ฝ”๋“œ ๊ฐœ๋ฐœ
3. ์ฒด์ธ์ฝ”๋“œ ํŒจํ‚ค์ง€
4. local Fabric ๊ตฌ๋™
5. local Fabric์— ์ฒด์ธ์ฝ”๋“œ ์„ค์น˜(install)
6. local Fabric์— ์ฒด์ธ์ฝ”๋“œ ๋ฐฐํฌ(instantiate)
7. ํŠธ๋žœ์ ์…˜ ์ฝœ
8. ์ฒด์ธ์ฝ”๋“œ ์ˆ˜์ •
9. ์ฒด์ธ์ฝ”๋“œ ํŒจํ‚ค์ง€
10. local Fabric์— ์ฒด์ธ์ฝ”๋“œ ์„ค์น˜(install)
11. local Fabric์— ์ฒด์ธ์ฝ”๋“œ ๋ฐฐํฌ(Upgrade)
12. ํŠธ๋žœ์ ์…˜ ์ฝœ

์ž ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด ๋ณผ๊นŒ์š”?

1. ์ฒด์ธ์ฝ”๋“œ(SmartContract) ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

1. IBP ์‚ฌ์ด๋“œ๋ฐ” ๋ ˆ์ด์•„์›ƒ ์ค‘ ์ œ์ผ ์ƒ๋‹จ์— SMART CONTRACT PACKAGES ํŒจ๋„์—์„œ Create Smart Contract Project ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค

2. ์ฒด์ธ์ฝ”๋“œ language๋ฅผ ์„ ํƒํ•˜๋ผ๋Š” ๋ฉ”๋‰ด๊ฐ€ ๋‚˜์˜ค๋ฉด Go ์–ธ์–ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค

3. ์ƒ์„ฑ ํ•  ์ฒด์ธ์ฝ”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
Browse๋ฅผ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค

์—ฌ๊ธฐ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
Go์–ธ์–ด์šฉ ์ฒด์ธ์ฝ”๋“œ ํ”„๋กœ์ ํŠธ๋Š” $GOPATH/src/ ๊ฒฝ๋กœ์— ์ƒ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ $GOPATH์™€ ๋ฌด๊ด€ํ•œ ๊ฒฝ๋กœ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋‚˜์ค‘์— ํŒจํ‚ค์ง€๋ฅผ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๋ฉ”์„ธ์ง€๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

4. ์ €๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ibp-cc๋ผ๋Š” ์ด๋ฆ„์˜ ์ƒˆ๋กœ์šด ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๊ฒฝ๋กœ ๋ฐ‘์—์„œ ์ฒด์ธ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ• ๊ฒ๋‹ˆ๋‹ค.

5. ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ƒ์„ฑ๋œ ํด๋”๋ฅผ ํด๋ฆญํ•˜๊ณ  save ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

6.save ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ VS Code WorkSpace์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด Workspace์— ์ถ”๊ฐ€(Add) ํ•ฉ๋‹ˆ๋‹ค.

7. WorkSpace์— ์ถ”๊ฐ€๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐœ์˜ go ํŒŒ์ผ์ด ๋ณด์—ฌ์ง‘๋‹ˆ๋‹ค.

8. ์‹ค์ œ ์ €ํฌ๊ฐ€ ๊ฐœ๋ฐœํ•  ์†Œ์Šค๋Š” chaincode.go์— ์žˆ์Šต๋‹ˆ๋‹ค.
๋””ํดํŠธ๋กœ ์ƒ์„ฑ๋œ chaincode.go ํŒŒ์ผ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์†Œ์Šค๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒด์ธ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•ด ๋ณด์…จ๋˜ ๋ถ„๋“ค์ด๋ผ๋ฉด ๋งŽ์ด ๋ณด์…จ์„ Init/Invoke ํ•จ์ˆ˜๊ฐ€ ๋ณด์ด๋„ค์š”.
ํ•˜์ง€๋งŒ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ตฌํ˜„์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์ฑ•ํ„ฐ์—์„œ ๊ณ„์†ํ•ด์„œ ์ง„ํ–‰ํ•ด ๋ณผ๊ฒŒ์š”.

2. ์ฒด์ธ์ฝ”๋“œ ๊ฐœ๋ฐœ

chaincode.goํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ˆ˜์ •ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. 2๊ฐœ์˜ function์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
– putData : args[0]์„ key๋กœ ์„ค์ •, TestModel(key,value) struct๋ฅผ json์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค
– getData : args[0]์„ key๋กœ ์„ค์ •, stateDB์— ์ €์žฅ๋œ ๊ฐ’์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค

3. ์ฒด์ธ์ฝ”๋“œ ํŒจํ‚ค์ง€

์ž ์ด์ œ 2๋ฒˆ์—์„œ ๊ฐœ๋ฐœํ•œ ์ฒด์ธ์ฝ”๋“œ๋ฅผ ํŒจํ‚ค์ง€ํ™” ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ๋‹ค์‹œ IBP ํƒญ์œผ๋กœ ์™€์„œ Package a Smart Contract Project ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค


2. WorkSpace ๋ชฉ๋ก์— ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ์ค‘ ํŒจํ‚ค์ง€ํ™” ํ•  ์ฒด์ธ์ฝ”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ WorkSpace์— ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†์œผ๋ฉด ์ด ๊ณผ์ •์€ ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค.
์ €๋Š” ์ด์ „์— ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ์š”. ๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ๋ชฉ๋ก ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋ผ๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.
$GOPATH/src ๋ฐ‘์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋”๋ผ๋„ VS Code WorkSpace์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์€ ํ”„๋กœ์ ํŠธ๋Š” ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ผญ ์ฃผ์˜ํ•ด ์ฃผ์„ธ์š”!


3. ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํด๋” ์ด๋ฆ„๊ณผ ๋™์ผํ•˜๊ฒŒ ibp-cc๋ผ๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


4. ๋ฒ„์ „์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ์ฒด์ธ์ฝ”๋“œ ์ด๋ฏ€๋กœ 1๋กœ ์„ค์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


5. ์•„๋ž˜์™€ ๊ฐ™์ด ํŒจํ‚ค์ง€๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ์ด๋ฆ„@ํŒจํ‚ค์ง€ ๋ฒ„์ „์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.


4. local Fabric ๊ตฌ๋™

ํŒจํ‚ค์ง€๊ฐ€ ์™„๋ฃŒ๋œ ์ฒด์ธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Fabric ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
local์—(๊ฐœ์ธ PC๋ผ๊ณ  ๊ฐ€์ •) Fabric ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ๋™์‹œ์ผœ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ํ˜„์žฌ๋Š” local pc(Desktop์ด๋ผ๊ณ  ๊ฐ€์ •)์— Fabric ์ด๋ฏธ์ง€๊ฐ€ ๊ตฌ๋™๋˜์ง€ ์•Š์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.


2. LOCAL FABRIC OPS ํŒจ๋„์—์„œ ‘Click to Start’ ๋ฌธ๊ตฌ๊ฐ€ ์ ํžŒ ๊ณณ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.


3. 2๋ฒˆ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด Fabric ์ด๋ฏธ์ง€๊ฐ€ ๋‹ค์šด๋กœ๋“œ ๋˜๋ฉฐ(fabric v1.4.1) ์ž๋™์œผ๋กœ ์ด๋ฏธ์ง€๋“ค์ด ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค(run).
์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ CA, Orderer, Peer, CouchDB ์ด๋ฏธ์ง€๊ฐ€ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค
(gliderlabs/logspout ์ด๋ฏธ์ง€๋„ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋“ค์˜ ๋กœ๊ทธ๋“ค์„ ๋ผ์šฐํŒ…ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์˜ต์…˜ ๋ฐ ํ•„ํ„ฐ๋ง์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ฒŒ๋” ํ•˜๋Š” ์จ๋“œํŒŒํ‹ฐ์ž…๋‹ˆ๋‹ค.
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค)
์–ด์จŒ๋“  ๋‹ค์‹œ docker ps๋ฅผ ์ณค์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด fabricvscodelocalfabric_์ด๋ฆ„ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ๊ตฌ๋™๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋˜ IBP SideBar์˜ ๋ชจ์Šต๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.
(๊ฐ ํŒจ๋„๋“ค์˜ ์„ค๋ช…์€ 2ํŽธ์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”)

5. local Fabric์— ์ฒด์ธ์ฝ”๋“œ ์„ค์น˜(install)

1. LOCAL FABRIC OPS ํŒจ๋„์—์„œ +Install ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.


2. ์ฒด์ธ์ฝ”๋“œ๋ฅผ ์„ค์น˜(install)ํ•  peer๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


3. ์„ค์น˜(install)ํ•  ํŒจํ‚ค์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” ์ด์ „์— ํŒจํ‚ค์ง€ํ™” ํ–ˆ๋˜ ibp-cc@1์„ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


4. ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด Installed ๋ชฉ๋ก์— ์ฒด์ธ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

6. local Fabric์— ์ฒด์ธ์ฝ”๋“œ ๋ฐฐํฌ(instantiate)

1. LOCAL FABRIC OPS ํŒจ๋„์—์„œ +Instantiate ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.


2. ๋””ํ”Œ๋กœ์ด(instantiate)ํ•  ์ฑ„๋„์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

3. ๋””ํ”Œ๋กœ์ด(instantiate)ํ•  ์ฒด์ธ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
๋‹น์—ฐํžˆ ์„ค์น˜๋œ(installed) ์ฒด์ธ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•ด์•ผ๊ฒ ์ฃ ?

4. ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋ช…์„ ์ ์Šต๋‹ˆ๋‹ค.
์ €๋Š” ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๋ฅผ ๋ณ„๋„๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ skip ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(๋นˆ ๊ณต๊ฐ„์œผ๋กœ enter)

5. Private Data Collection์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Yes๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋‹ค์Œ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ No๋ฅผ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

5. VS Code ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์— ๋””ํ”Œ๋กœ์ด๊ฐ€ ์ง„ํ–‰๋œ๋‹ค๋Š” ๋ฉ”์„ธ์ง€์ฐฝ์ด ๋œจ๋ฉฐ ์™„๋ฃŒ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด complete ๋ฉ”์„ธ์ง€๊ฐ€ ๋ณด์—ฌ์ง‘๋‹ˆ๋‹ค.


6. ๋””ํ”Œ๋กœ์ด(Instantiate)๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด Instantiated ๋ชฉ๋ก์— ์ฒด์ธ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.


7. ํŠธ๋žœ์ ์…˜ ์ฝœ(Invoke = Submit/Query = Evaluate)

๋ชจ๋“  ์ค€๋น„๊ฐ€ ๋‹ค ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ €ํฌ๊ฐ€ ๋งŒ๋“  ์ฒด์ธ์ฝ”๋“œ๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๋จผ์ € ๋ฐ์ดํƒ€๋ฅผ ์ €์žฅํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(Submit Transaction = Invoke Transaction)

1. FABRIC GATEWAYS ํŒจ๋„์—์„œ ์ฑ„๋„ ์„ ํƒ ํ›„ ํ•ด๋‹น ์ฑ„๋„์— ๋””ํ”Œ๋กœ์ด๋œ ์ฒด์ธ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
์ฒด์ธ์ฝ”๋“œ ์œ„์—์„œ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„ Submit Transaction์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

2. ํ˜ธ์ถœํ•  ํ•จ์ˆ˜๋ช…์„ ์ ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์œ„์—์„œ ์ž‘์„ฑํ•œ putData ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๊ฒ๋‹ˆ๋‹ค.

3. ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ ์Šต๋‹ˆ๋‹ค.
putData ํ•จ์ˆ˜์—๋Š” argument๋กœ key,value๊ฐ€ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ
์•„๋ž˜์™€ ๊ฐ™์ด ์ˆœ์„œ๋Œ€๋กœ ์ ์Šต๋‹ˆ๋‹ค.


4. ์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ €ํฌ๋Š” PDC๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค(optional)

5. ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

์ €์žฅ๋œ ๋ฐ์ดํƒ€๋ฅผ ์กฐํšŒ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(Evaluate Transaction = Query Transaction)

6. ์ฒด์ธ์ฝ”๋“œ ์œ„์—์„œ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„ Evaluate Transaction์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


7. ํ˜ธ์ถœํ•  ํ•จ์ˆ˜๋ช…์„ ์ ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์œ„์—์„œ ์ž‘์„ฑํ•œ getData ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๊ฒ๋‹ˆ๋‹ค.


8. ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ ์Šต๋‹ˆ๋‹ค.


9. ์ •์ƒ์ ์œผ๋กœ ํ˜ธ์ถœ๋˜๋ฉด Return๋œ value ๊ฐ’์ด ํ‘œ์‹œ ๋ฉ๋‹ˆ๋‹ค.

8. ์ฒด์ธ์ฝ”๋“œ(SmartContract) ์ˆ˜์ •

์ฒด์ธ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ๋ฐฐํฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(Upgrade)
์ด์ „์— ๋งŒ๋“ค์—ˆ๋˜ chainncode.go ํŒŒ์ผ๋กœ ๋Œ์•„์™€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
putData ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ํ˜„์žฌ์‹œ๊ฐ„์ด ํ•จ๊ป˜ ์ €์žฅ๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค(RegDate)


9. ์ฒด์ธ์ฝ”๋“œ(SmartContract) ํŒจํ‚ค์ง€

์ด ์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ์ฒด์ธ์ฝ”๋“œ ํŒจํ‚ค์ง€(3๋ฒˆ) ๊ณผ์ •์„ ๋™์ผํ•˜๊ฒŒ ๊ฑฐ์น˜๋ฉด SMART CONTRACT PACKAGES ํŒจ๋„์— ์•„๋ž˜์™€ ๊ฐ™์ด ํŒจํ‚ค์ง€๋œ ์ฒด์ธ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
์ €๋Š” ์ˆ˜์ •๋œ ์ฒด์ธ์ฝ”๋“œ์˜ ์ด๋ฆ„์„ ๋™์ผํ•˜๊ฒŒ ibp-cc๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „์€ 2๋ฒˆ์œผ๋กœ ํ–ˆ๊ตฌ์š”.


10. local Fabric์— ์ฒด์ธ์ฝ”๋“œ ์„ค์น˜(install)

์ด ์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ์ฒด์ธ์ฝ”๋“œ ์„ค์น˜(5๋ฒˆ) ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด LOCAL FABRIC OPS ํŒจ๋„์— ์„ค์น˜(install)๋œ ์ฒด์ธ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.


11. local Fabric์— ์ฒด์ธ์ฝ”๋“œ ๋ฐฐํฌ(upgrade)

1. ์ฒด์ธ์ฝ”๋“œ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๋Š”๊ฑด ํŒจ๋„์— ๋ฐ”๋กœ ๋…ธ์ถœ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด์ „์— ๋””ํ”Œ๋กœ์ด(instantiate)๋œ ์ฒด์ธ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ Upgrade Smart Contract ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.


2. ์ด ํ›„ ๊ณผ์ •์€ instantiate์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๋œ ์ฒด์ธ์ฝ”๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” ์ˆ˜์ •๋œ ์ฒด์ธ์ฝ”๋“œ ํŒจํ‚ค์ง€์ธ ibp-cc@2๋ฅผ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

3. ์—…๊ทธ๋ ˆ์ด๋“œ ๋œ ์ฒด์ธ์ฝ”๋“œ๊ฐ€ FABRIC GATEWAY ํŒจ๋„์— ๋ณด์ด๋Š”๊ตฐ์š”.
์ด์ œ ์ˆ˜์ •๋œ ์ฒด์ธ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

12. ํŠธ๋žœ์ ์…˜ ์ฝœ

1. Submit Transaction์œผ๋กœ putData ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.

2. Evaluate Transaction์œผ๋กœ getData ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.
์ˆ˜์ •๋œ ๋ฒ„์ „์˜ ์ฒด์ธ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์น˜๋ฉฐ…

IBM Blockchain Platform extension for VS Code – ์ฒด์ธ์ฝ”๋“œ ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ ๋†’์ด๊ธฐ ํŽธ์€ ์—ฌ๊ธฐ๊นŒ์ง€ ์ž…๋‹ˆ๋‹ค.

๋ธ”๋ก์ฒด์ธ ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ํ™•์žฅ๋˜๋ฉด์„œ ๋‹ค์ˆ˜์˜ ์ฒด์ธ์ฝ”๋“œ๋ฅผ ๋™์‹œ ๋‹ค๋ฐœ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ๋˜ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ณผ์ •์— ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
IBM Blockchain Platform for VS Code๋Š” ์ด๋Ÿฌํ•œ ๊ณผ์ •๋“ค์˜ ํšจ์œจ์„ฑ์„ ๋ถ€์—ฌํ•˜๋Š” ์ข‹์€ ์˜ต์…˜์œผ๋กœ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋„ค์š”.

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์—ฌ๊ธฐ์—์„œ ๋งŒ๋“  ์ฒด์ธ์ฝ”๋“œ๋ฅผ IBM Blockchain Platform(์ดํ•˜ IBP)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ IBP 2.0์— ๋Œ€ํ•ด
ํฌ์ŠคํŒ… ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์— ๋˜ ๋งŒ๋‚˜์š”!

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.