์ ์น๊ฐ ์ถ์ ๋ฏธ์น๋ ์ํฅ์ ๋งค์ฐ ํฝ๋๋ค. ์ ์น๋ ํ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ์น์ฒด์ ๋ฅผ ๋ฐ๊ฟ ์๋ ์๊ณ , ๊ฐ๊น์ด๋ ๋๋ค์ ํ๋ฐฐ ์ฌ์ ์๋, ๊ธฐ๋ด ์๋น์ค ํ์ง์๋ ์ํฅ์ ๋ผ์น ์๋ ์์ต๋๋ค. ๋ฏผ์ฃผ์ฃผ์ ๊ตญ๊ฐ์ ์๋ฏผ์ผ๋ก ๊ฐ์ฅ ๊ฐ๋จํ ์ ์น์ ์ฐธ์ฌํ ์ ์๋ ๋ฐฉ๋ฒ์ โํฌํโ์ ๋๋ค. ํ์ง๋ง ๊ทธ ์ค์์ฑ๊ณผ ์ฐธ์ฌ์ ํธ์์ฑ์๋ ๋ถ๊ตฌํ๊ณ ๋ง์ ์ฌ๋๋ค์ ํฌํ๋ฅผ ํฌ๊ธฐํ๊ณค ํฉ๋๋ค.
์ด์ ์ ์ผ์ด ๋๋ฌด ๊ณผ์คํด์ ์ผ์๋, ๊ฒจ์ฐ ์๊ธด ํด์ผ์ ์์ฐจ๊ฒ ์ฐ๊ณ ์ถ์ด์ ์ผ์ง๋ ๋ชจ๋ฆ ๋๋ค. ์ญ์ค์ ์ด๊ฒ๋, ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํฌํ๋ฅผ ํด์ผ ํฉ๋๋ค. ๊ฐ๋ฐํ ์ถ์ ์ฑ ์์ ์ ์น์ธ์๊ฒ ๋ฌผ์ ์ ์๋ ์ข์ ๊ธฐํ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ด ํ ํ๋ ์ ์ฒด ํ์ ๋นํ๋ฉด ์ ๋ง ์์ ํ ํ์ผ ๋ฟ์ด๊ณ , ๊ทธ ํ ํ๊ฐ ์ ๊ฑฐ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ง๋๋ค๋ ๊ฑด ๋ง๋ ์ ๋๋ ์ผ์ ๋๋ค. ์ด์ฐ ๋ณด๋ฉด ํฌํ ์์ฒด๊ฐ ๋น์ด์ฑ์ ์ธ ํ์์ผ ๋ฟ์ผ์ง ๋ชจ๋ฆ ๋๋ค.
๋ง์ฝ ์ด๋ฐ ๋น์ด์ฑ์ ์ธ ํ๋์ ์์ ์ฌ๋ฏธ๋ฅผ ์ฌ์ด์ฃผ๋ฉด ์ด๋จ๊น์. ํ๋ณด๋ค์๊ฒ ๋ฒ ํ ์ ํ๊ณ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์์ต์ด ์๊ธด๋ค๋ฉด ํจ์ฌ ์ฌ๋ฐ์ง ์์๊น์? ๋ก๋ ํ ์ฅ์ ์ฅ๊ณ ์ผ์ฃผ์ผ์ ๋ฒํฐ๋ ์์๋ฏผ ์ค ํ๋๋ก์จ, ์ด๋ฒ ์ง๋ฐฉ์ ๊ฑฐ์ ๊ทธ๋ฐ ๊ธฐ๋๊ฐ์ ํ์ ์ ์๋ค๋ฉด, ๋ฉ๋ฌ์ ํฌํํ ๋ง์๋ ์๊ธธ ๊ฒ ๊ฐ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ์ด๋์ด๋ธ ์์ ์ฐธ์ฌ๋ค์ด ์ฌํ๋ฅผ ๊ธ์ ์ ์ผ๋ก ๋ฐ๊พธ์ด ๊ฐ๋ฆฌ๋ผ ์๊ฐํ์ต๋๋ค.์ด๋ฐ ์๊ฐ์์ ๋์จ ์๋น์ค๊ฐ CryptoDemocracy ์ ๋๋ค.
CryptoDemocracy ๋ Cryptocurrency(์ํธํํ) ์ Democracy(๋ฏผ์ฃผ์ฃผ์)์ ํฉ์ฑ์ด๋ก, 2018๋ ์ง๋ฐฉ์ ๊ฑฐ์ ์์ธ ์์ฅ ํ๋ณด ์ธ ๋ถ์๊ฒ ์ด๋๋ฆฌ์์ ๋ฒ ํ ํ๊ณ ์ ๊ฑฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์์ต์ ์ป์ ์ ์๋ ์๋น์ค์ ๋๋ค. ์ ๊ฑฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํจ๋ฐฐํ ์ชฝ์ ๋ฒ ํ ๋ ์ด๋๋ฆฌ์์ด ์น์์๊ฒ ๋ถ๋ฐฐ๋ฉ๋๋ค. ๋ฒ ํ ๊ธ์ก์ ์ ํ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ํ๋ณด์๊ฒ ๋ฒ ํ ์ ํ ์๋ ์์ต๋๋ค. ์ฌ๋ฏธ๋ฅผ ๋์ด๊ธฐ ์ํด ๋ฒ ํ ์ ๋นจ๋ฆฌ ์ฐธ์ฌํ ์๋ก ๋ฒ ํ ๊ธ์ก ๋๋น ์์ต๋ฅ ์ ๋์์ง๋๋ก ์ค์ ํ์ผ๋ฏ๋ก, ๋ฒ ํ ์ ์๋๋ฅด๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฐฑ์๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์.
์ ์ธ ํ๋ณด์๊ฒ ์ด๋๋ฆฌ์์ ๋ฒ ํ
ํ ์ ์๋ค. (๊ฑฐ ์์ธ์์ฅ ์ด๋ฆ์ด ๋ญ์?)
๋๊ตฌ๋ ๋ฉํ๋ง์คํฌ(๋ฉํ๋ง์คํฌ ์ค์น)๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ ๋ฒ ํ ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค. ๊ฐ ํ๋ณด ์๋ ์ ๋ ฅ์ฐฝ์ ๋ฒ ํ ๊ธ์ก์ ์ ๋ ฅํ ๋ค, ๋ฒ ํ ํ๊ธฐ๋ฅผ ๋ฒํผ์ ๋๋ฌ ๋ฉํ๋ง์คํฌ ๊ฒฐ์ ๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ฉด ์ฐธ์ฌ๊ฐ ์๋ฃ๋ฉ๋๋ค. ์์ธ ์์ฅ์ด ๊ฒฐ์ ๋๋ ๋ ์ ๊ฑฐ ๊ฒฐ๊ณผ๊ฐ ์ ๋ ฅ๋๋ฉฐ, ์ด ๋ ๋ชจ๋ ๋ฒ ํ ์ก๊ณผ ์๊ธ์ด ๋ถ๋ฐฐ๋ฉ๋๋ค. ์์ฝ๊ฒ๋, ์ด ์๋น์ค๋ ์ค์ ๋ฒ ์๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ผ๋ฏ๋ก, ์ด๋๋ฆฌ์ ๋ฉ์ธ๋ท์์ ๋์ํ์ง๋ ์์ต๋๋ค. (๋๋ฐ์ฅ ๊ฐ์ค์ฃ๋ 5๋ ์ดํ์ ์ง์ญ ๋๋ 3์ฒ๋ง์ ์ดํ์ ๋ฒ๊ธ..!) ์ด๋๋ฆฌ์ Rinkeby ๋คํธ์ํฌ๋ฅผ ์ด์ฉํ๋ฉด ์ผ๋ง๋ ์ง ๋ฒ ํ ์ ํ ์ ์์ผ๋, ๋ง์ด ์ฆ๊ฒจ์ฃผ์๋ฉด ์ข๊ฒ ์ต๋๋ค.
์ด ์๋น์ค๋ Solidity ์ Web3js ๋ฅผ ์ด์ฉํด ๋ง๋ค์ด์ก์ต๋๋ค. React์ Drizzle์ ์ด์ฉํด๋ณด๋ ค๊ณ ์๋ํ์ผ๋, ๋ ํผ๋ฐ์ค์ ๋ถ์ฌ๋ก 1์ฃผ์ผ์ ๋ ๋ฆฌ๊ณ ๋ค์ ๋ฐ๋๋ผ js ๋ก ์์ ์ ์งํํ์ต๋๋ค. Truffle, Ganache, Remix ๋ฑ์ ํด์ ์ด์ฉํด ๊ฐ๋ฐ์ ์งํํ๋ ๋์ ์๋ง์ ๋๊ด๋ค์ ๋ง๋ฌ์ต๋๋ค. (๋์์ด ๋์๋ ์๋น์ค์ Gitter ์ฑ๋ฐฉ์ ์๋์ ๊ธฐ๋กํ์ต๋๋ค. ) ๋ฌด์๋ณด๋ค ๋ ํผ๋ฐ์ค์ ๋ถ์กฑํจ๊ณผ, ๋๋ฒ๊น ์ ๋ถํธํจ์ด ์ ์ผ ํฐ ๋ฌธ์ ๋ก ๋ค๊ฐ์์ต๋๋ค. ๋ ํผ๋ฐ์ค์ ๋ถ์กฑ์ ์คํ์ค๋ฒํ๋ก์ฐ์ Gitter, ์นด์นด์ค ์คํ ์ฑํ ๋ฐฉ์์ ๋์์ ๋ง์ด ๋ฐ์์ต๋๋ค. Remix๊ฐ ์๋ Truffle ์ ์ฌ์ฉํ ๋๋ ๋ชจ๋ function ์ ์ด๋ฒคํธ๋ฅผ ๊ตฌํํด ์ฌ์ฉํ๋ ๋ชจ๋ ๋ณ์๋ฅผ ํธ๋ํนํด์ผ ํ์ต๋๋ค.( ๋ ๋์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์ธ์. ) ๋ํ ์ ๋ฐ์ดํธ๊ฐ ๋น ๋ฅด๊ฒ ์งํ๋๊ณ ์๋ ์ธ์ด์ด๋ค ๋ณด๋, Solidity ๋ฒ์ ๋ณ๋ก ๋ฌธ๋ฒ์ด ๋ค๋ฅธ ๋๊ฐ ์์ด์ ์ฝ์ง์ ๋ช ์ฐจ๋ก ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธ์ ์ ์ผ๋ก ๋ณธ๋ค๋ฉด ์์ง ๋ฐ์ ์ฌ์ง๊ฐ ๋ง์ ์ธ์ด์ด๊ณ , ์์ผ๋ก๋ ๋ฌด๊ถ๋ฌด์งํ ๊ฐ๋ฅ์ฑ์ ํ๊ณ ์์ต๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ผ๋ก๋ ์ด ๋ธ๋ก๊ทธ(@wklee)๋ฅผ ํตํด ๊ด๋ จํ ์์๋ค์ ๊ณต์ ํ๊ฒ ์ต๋๋ค.
๋ธ๋ก์ฒด์ธ์ ๊ธฐ๋ฐ ๊ธฐ์ ์ ๋ฐ์ดํฐ์ ๋ถ๋ณ์ฑ์ ์์ต๋๋ค. ๊ทธ๋ ๊ฒ ๋ณด๋ฉด, ๋ธ๋ก์ฒด์ธ์ ์๋ฐ๋ฅ ๋ค์ง๋ฏ ๋ง์ ๋ค์ง๋ ์ ์น์ธ์๊ฒ ๊ผญ ํ์ํ ์์คํ ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ๋ค๋ง CryptoDemocracy ๋ ๋ธ๋ก์ฒด์ธ์ ์ง์ง ๊ฐ์น๋ณด๋ค๋, ํํ์ ๊ฐ์ํ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์์ต๋๋ค. ๋ธ๋ก์ฒด์ธ๊ณผ ์ ์น๊ฐ ๊ฒฐํฉํ ๋ชจ์ต์ด ๋ ๊ถ๊ธํ ๋ถ๋ค๊ป ์ฝ์๊ฑฐ๋ฆฌ ํ๋๋ฅผ ์ถ์ฒํฉ๋๋ค. liquid democracy ๋ผ๋ ํ๋ก์ ํธ์ ๋๋ค. ์ ์น์ ์ฐธ์ฌํ๊ธฐ ์ด๋ ค์ด ๊ฐ์ธ๋ค์ด ์๊ฒฌ์ ๋ง๋ ์ฌ๋์ ๋๋ณ์ธ์ผ๋ก ์ค์ ํ๊ณ , ์ ์น์ ๊ฐ์ ์ ์ผ๋ก ์ฐธ์ฌํ ์ ์๋ ํ๋ก์ ํธ์ ๋๋ค. ์ค์ํ ์ ์ ์ด๋ ๊ฒ ์ค์ ๋ ๋๋ณ์ธ์ ์ง์๊ฐ ์ธ์ ๋ (4๋ ์ ๊ธฐ๋ค๋ฆด ํ์ ์์ด) ์ฌ๋ผ์ง ์ ์๋ค๋ ์ ์ ๋๋ค. EOS ์ DPOS ์ ๋น์ทํ ๊ฐ๋ ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
๋ธ๋ก์ฒด์ธ์ ์์ง ๋นํธ์ฝ์ธ์ ๊ทธ๋ฆผ์์ ๊ฐ๋ ค์ ธ ์์ต๋๋ค. ํ์ง๋ง, ์ ์ฐจ ๋ง์ ์ฌ๋๋ค์ด ๋ธ๋ก์ฒด์ธ์ ๊ฐ๋ฅ์ฑ์ ๋ณด๊ณ ์ด ๋ถ์ผ๋ก ๋ฐ์ด๋ค๊ณ ์์ต๋๋ค. ์ ๋ํ ์ด๋ฅผ ๊ณ์ ๊ณต๋ถํ๊ณ ๊ธฐํ๋ค์ ์ฐพ๊ณ ์์ต๋๋ค. ์์ผ๋ก๋ ๋ธ๋ก์ฒด์ธ ๊ธฐ์ ๊ณผ ๋ณํ๋ ์ฐ์ ์ ๋ํ ๊ธ์ ์ด ๋ธ๋ก๊ทธ(@wklee)๋ฅผ ํตํด ๊ณต์ ํ๊ฒ ์ต๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
ํ๋ก์ ํธ์ ์ฌ์ฉ๋ ํด
์ฌ์ฉํ ๊ธฐ์ , ํด : Remix, Solidity, Web3js, Ganache, npm, webpack, Github pages
๊ธฐ๋ฐ ํ๋ก์ ํธ : Truffle webpack demo, ConsenSys
References
์๋น์ค ์(Color Scheme) ์ ๋์๋ฐ์ ์๋น์ค : klart.io
ํ์ด์ง ๋์์ธ ๋ ํผ๋ฐ์ค : pages
์ ์น์ ๋ธ๋ก์ฒด์ธ : liquid democracy
Gitter ์ด๋๋ฆฌ์ web3js ์ฑ : https://gitter.im/ethereum/web3.js
Gitter Truffle ์ฑ : https://gitter.im/ConsenSys/truffle
๋ค์ ๊ธ์์๋ ๊ฐ๋ฐ๊ณผ์ ์์ ๊ฒช์ ์ด์๋ค์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
Metamask ์ Ganache ์ฌ์ฉ์ ๋ฐ์ํ๋ Nounce match ์ด์
Web3js ์ Event ๋ฅผ ์ด์ฉํ solidity ๋๋ฒ๊น
Solidity Address checksum
keccak256 : ํด์๋ฅผ ์ด์ฉํ String ๋น๊ต
๊ธฐ๋ณธ์ ์ธ Solidity ์ Web3js ์ ๋์
Solidity ์์ ์์์ ์ ํํํ๋ ๋ฐฉ๋ฒ(๊ฐ์๊ฑด ์๋ค)
๋ฐฐํฌ๋ Contract ๋ฅผ ABI ๋ก ์ฐ๊ฒฐํ๊ธฐ
Writer : WK LEE (@wklee)
[์ด ๊ธ์ Brunch(@bitcoin)์๋ ๊ฒ์ฌ๋์์ต๋๋ค. ]