7. Timeline
• 2016년 3월 14일 (PI DAY) 에 진행
• 하위 호환 불가한 (BACKWARD-INCOMPATIBLE)
변화로서 하드포크(HARD FORK) 진행
• 스마트 컨트랙트 생성비용 증가, 난이도 조절 알고
리즘 변경, 새로운 옵코드(DELEGATE CALL), 네
트워크 프로토콜 업그레이드 등의 변화가 진행
8. Timeline
• 2016년 5월 일종의 벤처캐피탈 펀드인 THE DAO
가 11,000여명으로부터 약 1억 5,000만달러의 자
금을 유치
• 2016년 6월 18일 펀딩자금을 보유하고 있던 스마
트 컨트랙트의 버그로 인해 당시 약 6,000만달러
에 해당하는 360여만 이더(ETHER)가 탈취
• 이후 6월 20일 하드포크를 통해 해킹을 무효화
• DAO 하드포크에 반대한 사람들이 이더리움 클래
식(ETHEREUM CLASSIC)을 론칭
source: http://www.altcointoday.com/ethereum-holders-vote-in-
favor-of-hardfork/
9. Timeline
• 라이덴(RAIDEN) 네트워크, 트루빗(TRUEBIT), 패
리티(PARITY) 론칭, 이더리움 & 지캐시 협업, 캐
스퍼, 스테이트 채널(STATE CHANNEL), 솔리디
티(SOLIDITY) FORMAL VERIFICATION 등 다양
한 내용의 주제 발표
22. 스마트 컨트랙트의 취약점
• 변수 및 함수명 혼동 (e.g. Rubixi)
• 공개되지 않아야 할 데이터의 공개 (e.g. 카지노의 난수생성
seed 값, 가위바위보)
• Re-entrancy Attack (e.g. DAO 해킹)
• 배열 및 루프 가스제한 (e.g. Governmental)
• 함수 접근권한 설정오류 (e.g. Parity 멀티시그 해킹)
source:
https://www.reddit.com/r/ethereum/comments/4ghzhv/governmentals_1100_eth_jackpot_payout_is_stuck/
돈을 출금하기 위해서는 creditorAddresses와 creditorAmounts를 초기화해
야 하지만 초기화 비용이 500만 가스가 필요하지만 transaction 최대 가스
량은 470만 가스로서 1,100ETH가 출금되지 못하고 묶이는 상황 발생
23. 스마트 컨트랙트의 취약점
• 변수 및 함수명 혼동 (e.g. Rubixi)
• 공개되지 않아야 할 데이터의 공개 (e.g. 카지노의 난수생성
seed 값, 가위바위보)
• Re-entrancy Attack (e.g. DAO 해킹)
• 배열 및 루프 가스제한 (e.g. Governmental)
• 함수 접근권한 설정오류 (e.g. Parity 멀티시그 해킹)
WalletLibrary.initWallet()
Wallet’s fallback function
Wallet의 fallback function을 통해 WalletLibrary의 모든 public 함수 호출 가능
24. 스마트 컨트랙트의 취약점
• 변수 및 함수명 혼동 (e.g. Rubixi)
• 공개되지 않아야 할 데이터의 공개 (e.g. 카지노의 난수생성
seed 값, 가위바위보)
• Re-entrancy Attack (e.g. DAO 해킹)
• 배열 및 루프 가스제한 (e.g. Governmental)
• 함수 접근권한 설정오류 (e.g. Parity 멀티시그 해킹)
WalletLibrary.initWallet()
Wallet’s fallback function
Wallet의 fallback function을 통해 WalletLibrary의 모든 public 함수 호출 가능
기본적으로 Solidity의 함수는 default public으로 설정되
어 initWallet 함수에 접근권한이 설정되어있지 않았음
25. 스마트 컨트랙트의 취약점
• 변수 및 함수명 혼동 (e.g. Rubixi)
• 공개되지 않아야 할 데이터의 공개 (e.g. 카지노의 난수생성
seed 값, 가위바위보)
• Re-entrancy Attack (e.g. DAO 해킹)
• 배열 및 루프 가스제한 (e.g. Governmental)
• 함수 접근권한 설정오류 (e.g. Parity 멀티시그 해킹)
WalletLibrary.initWallet()
Wallet’s fallback function
Wallet의 fallback function을 통해 WalletLibrary의 모든 public 함수 호출 가능
기본적으로 Solidity의 함수는 default public으로 설정되
어 initWallet 함수에 접근권한이 설정되어있지 않았음
initWallet을 통해 지갑의 소유자 변경 가능
26. • 공통 패턴을 찾아 이를 하드코딩 (e.g. ERC20) / 표준화된 mid-level
component (e.g. 카지노가 자신만의 난수생성함수를 쓰는 대신 표준화된
난수생성함수를 호출)
• 새로운 스마트 컨트랙트 프로그래밍 언어 e.g. 바이퍼 (Viper), 배비지
(Babbage) 등
• 향상된 개발자 도구 (e.g. 디버깅 툴)
• Formal Verification
스마트 컨트랙트의 보안 개선노
력
27. 스마트 컨트랙트의 보안 개선노
력
• 공통 패턴을 찾아 이를 하드코딩 (e.g. ERC20) / 표준화된 mid-level
component (e.g. 카지노가 자신만의 난수생성함수를 쓰는 대신 표준화된
난수생성함수를 호출)
• 새로운 스마트 컨트랙트 프로그래밍 언어 e.g. 바이퍼 (Viper), 배비지
(Babbage) 등
• 향상된 개발자 도구 (e.g. 디버깅 툴)
• Formal Verification
28. • 공통 패턴을 찾아 이를 하드코딩 (e.g. ERC20) / 표준화된 mid-level
component (e.g. 카지노가 자신만의 난수생성함수를 쓰는 대신 표준화된
난수생성함수를 호출)
• 새로운 스마트 컨트랙트 프로그래밍 언어 e.g. 바이퍼 (Viper), 배비지
(Babbage) 등
• 향상된 개발자 도구 (e.g. 디버깅 툴)
• Formal Verification
스마트 컨트랙트의 보안 개선노
력
32. • 공통 패턴을 찾아 이를 하드코딩 (e.g. ERC20) / 표준화된 mid-level
component (e.g. 카지노가 자신만의 난수생성함수를 쓰는 대신 표준화된
난수생성함수를 호출)
• 새로운 스마트 컨트랙트 프로그래밍 언어 e.g. 바이퍼 (Viper), 배비지
(Babbage) 등
• 향상된 개발자 도구 (e.g. 디버깅 툴)
• Formal Verification
스마트 컨트랙트의 보안 개선노
력
33. • 공통 패턴을 찾아 이를 하드코딩 (e.g. ERC20) / 표준화된 mid-level
component (e.g. 카지노가 자신만의 난수생성함수를 쓰는 대신 표준화된
난수생성함수를 호출)
• 새로운 스마트 컨트랙트 프로그래밍 언어 e.g. 바이퍼 (Viper), 배비지
(Babbage) 등
• 향상된 개발자 도구 (e.g. 디버깅 툴)
• Formal Verification
스마트 컨트랙트의 보안 개선노
력
source: https://yoichihirai.com/deed.pdf
34. • 이더리움은 현재 GPU 기반의 작업증명 알고리즘인 Ethash를 사용
• 사토시 나카모토가 사용한 작업증명(PoW) 방식의 합의 알고리즘은 1. 과
도한 에너지 소모와 환경파괴 2. 채굴의 중앙화 심화 3. 높은 공격 지속 가
능성 등의 문제를 지니고 있음
• 이더리움은 단계적으로 작업증명 방식에서 지분증명 방식의 합의 알고리
즘으로 전환하려고 하고 있음
이더리움의 합의 알고리즘
35. • 이더리움은 현재 GPU 기반의 작업증명 알고리즘인 Ethash를 사용
• 사토시 나카모토가 사용한 작업증명(PoW) 방식의 합의 알고리즘은 1. 과
도한 에너지 소모와 환경파괴 2. 채굴의 중앙화 심화 3. 높은 공격 지속 가
능성 등의 문제를 지니고 있음
• 이더리움은 단계적으로 작업증명 방식에서 지분증명 방식의 합의 알고리
즘으로 전환하려고 하고 있음
이더리움의 합의 알고리즘
36. • 이더리움은 현재 GPU 기반의 작업증명 알고리즘인 Ethash를 사용
• 사토시 나카모토가 사용한 작업증명(PoW) 방식의 합의 알고리즘은 1. 과
도한 에너지 소모와 환경파괴 2. 채굴의 중앙화 심화 3. 높은 공격 지속 가
능성 등의 문제를 지니고 있음
• 이더리움은 단계적으로 작업증명 방식에서 지분증명 방식의 합의 알고리
즘으로 전환하려고 하고 있음
이더리움의 합의 알고리즘
37. • 이더리움은 현재 GPU 기반의 작업증명 알고리즘인 Ethash를 사용
• 사토시 나카모토가 사용한 작업증명(PoW) 방식의 합의 알고리즘은 1. 과
도한 에너지 소모와 환경파괴 2. 채굴의 중앙화 심화 3. 높은 공격 지속 가
능성 등의 문제를 지니고 있음
• 이더리움은 단계적으로 작업증명 방식에서 지분증명 방식의 합의 알고리
즘으로 전환하려고 하고 있음
이더리움의 합의 알고리즘
38. • 지분증명(PoS: Proof of Stake): 특정량의 이더(ether)를 예치(deposit)한 참가자는 검
증자(validator)로서 참여하여 블록을 생성 및 검증
• 예치금 몰수(“Slashing”): 검증자들이 올바르게 행동하도록 유인을 제공하고“nothing-
at-stake” 문제를 해결하기 위해 올바르지 못한 행동을 하는 경우 예치금을 몰수
• 경제적 완결성(Economic Finality) - “이미 완결된(finalized) 블록을 되돌리는 경우 1/3
이상의 검증자 집단은 예치금 100만 이더(ether)를 몰수당한다” - 보장
• Checkpointing PoW / 점진전 전환: 작업증명 블록체인 위에 100블록마다 1번씩 체크
포인트(checkpoin)를 설정하고 체크포인트에만 지분증명을 적용하는 방식의 Hybrid
PoW/PoS 방식으로 시작하여 완전한 지분증명 방식으로의 점진적 전환을 계획
• Vitalik Buterin (FFG: Casper the Friendly Finality Gadget) / Vlad Zamfir (CBC:
Correct-by-Construction)
이더리움의 지분증명, 캐스퍼
(Casper)
39. • 지분증명(PoS: Proof of Stake): 특정량의 이더(ether)를 예치(deposit)한 참가자는 검
증자(validator)로서 참여하여 블록을 생성 및 검증
• 예치금 몰수(“Slashing”): 검증자들이 올바르게 행동하도록 유인을 제공하고“nothing-
at-stake” 문제를 해결하기 위해 올바르지 못한 행동을 하는 경우 예치금을 몰수
• 경제적 완결성(Economic Finality) - “이미 완결된(finalized) 블록을 되돌리는 경우 1/3
이상의 검증자 집단은 예치금 100만 이더(ether)를 몰수당한다” - 보장
• Checkpointing PoW / 점진전 전환: 작업증명 블록체인 위에 100블록마다 1번씩 체크
포인트(checkpoin)를 설정하고 체크포인트에만 지분증명을 적용하는 방식의 Hybrid
PoW/PoS 방식으로 시작하여 완전한 지분증명 방식으로의 점진적 전환을 계획
• Vitalik Buterin (FFG: Casper the Friendly Finality Gadget) / Vlad Zamfir (CBC:
Correct-by-Construction)
이더리움의 지분증명, 캐스퍼
(Casper)
40. • 지분증명(PoS: Proof of Stake): 특정량의 이더(ether)를 예치(deposit)한 참가자는 검
증자(validator)로서 참여하여 블록을 생성 및 검증
• 예치금 몰수(“Slashing”): 검증자들이 올바르게 행동하도록 유인을 제공하고“nothing-
at-stake” 문제를 해결하기 위해 올바르지 못한 행동을 하는 경우 예치금을 몰수
• 경제적 완결성(Economic Finality) - “이미 완결된(finalized) 블록을 되돌리는 경우 1/3
이상의 검증자 집단은 예치금 100만 이더(ether)를 몰수당한다” - 보장
• Checkpointing PoW / 점진전 전환: 작업증명 블록체인 위에 100블록마다 1번씩 체크
포인트(checkpoin)를 설정하고 체크포인트에만 지분증명을 적용하는 방식의 Hybrid
PoW/PoS 방식으로 시작하여 완전한 지분증명 방식으로의 점진적 전환을 계획
• Vitalik Buterin (FFG: Casper the Friendly Finality Gadget) / Vlad Zamfir (CBC:
Correct-by-Construction)
이더리움의 지분증명, 캐스퍼
(Casper)
42. • 지분증명(PoS: Proof of Stake): 특정량의 이더(ether)를 예치(deposit)한 참가자는 검
증자(validator)로서 참여하여 블록을 생성 및 검증
• 예치금 몰수(“Slashing”): 검증자들이 올바르게 행동하도록 유인을 제공하고“nothing-
at-stake” 문제를 해결하기 위해 올바르지 못한 행동을 하는 경우 예치금을 몰수
• 경제적 완결성(Economic Finality) - “이미 완결된(finalized) 블록을 되돌리는 경우 1/3
이상의 검증자 집단은 예치금 100만 이더(ether)를 몰수당한다” - 보장
• Checkpointing PoW / 점진전 전환: 작업증명 블록체인 위에 100블록마다 1번씩 체크
포인트(checkpoin)를 설정하고 체크포인트에만 지분증명을 적용하는 방식의 Hybrid
PoW/PoS 방식으로 시작하여 완전한 지분증명 방식으로의 점진적 전환을 계획
• Vitalik Buterin (FFG: Casper the Friendly Finality Gadget) / Vlad Zamfir (CBC:
Correct-by-Construction)
이더리움의 지분증명, 캐스퍼
(Casper)
43. • 지분증명(PoS: Proof of Stake): 특정량의 이더(ether)를 예치(deposit)한 참가자는 검
증자(validator)로서 참여하여 블록을 생성 및 검증
• 예치금 몰수(“Slashing”): 검증자들이 올바르게 행동하도록 유인을 제공하고“nothing-
at-stake” 문제를 해결하기 위해 올바르지 못한 행동을 하는 경우 예치금을 몰수
• 경제적 완결성(Economic Finality) - “이미 완결된(finalized) 블록을 되돌리는 경우 1/3
이상의 검증자 집단은 예치금 100만 이더(ether)를 몰수당한다” - 보장
• Checkpointing PoW / 점진전 전환: 작업증명 블록체인 위에 100블록마다 1번씩 체크
포인트(checkpoin)를 설정하고 체크포인트에만 지분증명을 적용하는 방식의 Hybrid
PoW/PoS 방식으로 시작하여 완전한 지분증명 방식으로의 점진적 전환을 계획
• Vitalik Buterin (FFG: Casper the Friendly Finality Gadget) / Vlad Zamfir (CBC:
Correct-by-Construction)
이더리움의 지분증명, 캐스퍼
(Casper)
45. • 지분증명(PoS: Proof of Stake): 특정량의 이더(ether)를 예치(deposit)한 참가자는 검
증자(validator)로서 참여하여 블록을 생성 및 검증
• 예치금 몰수(“Slashing”): 검증자들이 올바르게 행동하도록 유인을 제공하고“nothing-
at-stake” 문제를 해결하기 위해 올바르지 못한 행동을 하는 경우 예치금을 몰수
• 경제적 완결성(Economic Finality) - “이미 완결된(finalized) 블록을 되돌리는 경우 1/3
이상의 검증자 집단은 예치금 100만 이더(ether)를 몰수당한다” - 보장
• Checkpointing PoW / 점진전 전환: 작업증명 블록체인 위에 100블록마다 1번씩 체크
포인트(checkpoin)를 설정하고 체크포인트에만 지분증명을 적용하는 방식의 Hybrid
PoW/PoS 방식으로 시작하여 완전한 지분증명 방식으로의 점진적 전환을 계획
• Vitalik Buterin (FFG: Casper the Friendly Finality Gadget) / Vlad Zamfir (CBC:
Correct-by-Construction)
이더리움의 지분증명, 캐스퍼
(Casper)
46. • 초당 처리할 수 있는 transaction의 수(tps: transaction per second)가 제한적이며 높은
중복성으로 인해 EVM 자체의 성능이 매우 떨어짐. 이더리움이 널리 사용될수록 이더
리움 블록체인을 저장하고 전파하기 위해 필요한 저장공간 및 bandwidth 이 높아져 네
트워크의 분산화(decentralization)을 해칠 우려가 있음
• 현재 이더리움에서 가장 활발하게 연구되고 있는 확장성 솔루션은 라이덴(Raiden) 네
트워크, 플라즈마(Plasma) 및 샤딩(sharding) 등이 있음
확장성(scalability) 문제
47. • 초당 처리할 수 있는 transaction의 수(tps: transaction per second)가 제한적이며 높은
중복성으로 인해 EVM 자체의 성능이 매우 떨어짐. 이더리움이 널리 사용될수록 이더
리움 블록체인을 저장하고 전파하기 위해 필요한 저장공간 및 bandwidth 이 높아져 네
트워크의 분산화(decentralization)을 해칠 우려가 있음
• 현재 이더리움에서 가장 활발하게 연구되고 있는 확장성 솔루션은 라이덴(Raiden) 네
트워크, 플라즈마(Plasma) 및 샤딩(sharding) 등이 있음
확장성(scalability) 문제
48. • 초당 처리할 수 있는 transaction의 수(tps: transaction per second)가 제한적이며 높은
중복성으로 인해 EVM 자체의 성능이 매우 떨어짐. 이더리움이 널리 사용될수록 이더
리움 블록체인을 저장하고 전파하기 위해 필요한 저장공간 및 bandwidth 이 높아져 네
트워크의 분산화(decentralization)을 해칠 우려가 있음
• 현재 이더리움에서 가장 활발하게 연구되고 있는 확장성 솔루션은 라이덴(Raiden) 네
트워크, 플라즈마(Plasma) 및 샤딩(sharding) 등이 있음
확장성(scalability) 문제
59. • 블록체인 상의 데이터는 모두 공개되어있기 때문에 사생활 보호가 제대로
이루어지지 않음
• CoinJoin, zk-SNARKs 및 ring signature와 같은 도구들이 사용됨
사생활 보호
source: http://weuse.cash/2016/10/26/warning-dash-privacy-is-worse-than-bitcoin/
62. • 이더리움이 작업증명(PoS) 방식으로 전환함에 따라 채굴자와 사용자의 구분이
없어져 비트코인의 채굴 집중화를 완화시킬 수 있음
• 협력 및 의사결정이 비트코인에 비해 순조로움. 이는 1. 이더리움이 비트코인의
보수적인 환경에 대한 일종의 반발에 의해 생겨났으며 2. 비탈릭 뷰테린이 커뮤
니티 내에서 많은 지지를 받기 때문임
• 문제점은 설립자인 비탈릭 뷰테린에 대한 지나친 의존도와 코어 프로토콜 개발
에 대한 인센티브의 부족
이더리움 거버넌스(Governance)
63. • 이더리움이 작업증명(PoS) 방식으로 전환함에 따라 채굴자와 사용자의 구분이
없어져 비트코인의 채굴 집중화를 완화시킬 수 있음
• 협력 및 의사결정이 비트코인에 비해 순조로움. 이는 1. 이더리움이 비트코인의
보수적인 환경에 대한 일종의 반발에 의해 생겨났으며 2. 비탈릭 뷰테린이 커뮤
니티 내에서 많은 지지를 받기 때문임
• 문제점은 설립자인 비탈릭 뷰테린에 대한 지나친 의존도와 코어 프로토콜 개발
에 대한 인센티브의 부족
이더리움 거버넌스(Governance)
64. • 이더리움이 작업증명(PoS) 방식으로 전환함에 따라 채굴자와 사용자의 구분이
없어져 비트코인의 채굴 집중화를 완화시킬 수 있음
• 협력 및 의사결정이 비트코인에 비해 순조로움. 이는 1. 이더리움이 비트코인의
보수적인 환경에 대한 일종의 반발에 의해 생겨났으며 2. 비탈릭 뷰테린이 커뮤
니티 내에서 많은 지지를 받기 때문임
• 문제점은 설립자인 비탈릭 뷰테린에 대한 지나친 의존도와 코어 프로토콜 개발
에 대한 인센티브의 부족
이더리움 거버넌스(Governance)
65. • 이더리움이 작업증명(PoS) 방식으로 전환함에 따라 채굴자와 사용자의 구분이
없어져 비트코인의 채굴 집중화를 완화시킬 수 있음
• 협력 및 의사결정이 비트코인에 비해 순조로움. 이는 1. 이더리움이 비트코인의
보수적인 환경에 대한 일종의 반발에 의해 생겨났으며 2. 비탈릭 뷰테린이 커뮤
니티 내에서 많은 지지를 받기 때문임
• 문제점은 설립자인 비탈릭 뷰테린에 대한 지나친 의존도와 코어 프로토콜 개발
에 대한 인센티브의 부족
이더리움 거버넌스(Governance)
71. • 코어 프로토콜
• 다양한 합의 알고리즘
• 암호경제학
• 스마트 컨트랙트 및 VM
• 분산 네트워크
• 기타 Fundamental Research
• 블록체인 개발자/비개발자 교육 프로그램 개발
Research Funding!
theblockchainers@gmail.com