예제로 배우는 이더리움 결제구현 (거래소 지갑 구현 예시)Colin Chae
대상
- 이더리움이 어떻게 돌아가는지 알고 싶은 분들
- 이더리움 입출금 개발을 시작하시려는 분들
- Go-ethereum 소스코드 공부하시는 분들
개발스택
- 이더리움 노드 : 설치/운영 수고가 없는 infura.io 사용
- 개발 언어 + 라이브러리 : Go + Geth (as a RPC library)
3.고객을 연결하는 블록체인 (4차산업혁명: 고객과의 소통 신기술의 진화)doo rip choi
4차 산업혁명의 기술들은 소통을 위한 진화 기술로 발전되어 가고 있다.
비즈니스 영역마다 고객과의 소통이 필요하고 신기술을 활용한
고객의 니즈에 맞는 서비스 역량을 가져야 할 것이다.
고객과의 소통을 주제로 3개의 시리즈 물로 발표 자료를 공유 합니다.
고객과의 소통 신기술의 진화,
1. 고객을 이해하는 빅데이터
(The big data platform to understand customers.)
2. 고객과 소통하는 인공지능
( Artificial intelligence to communicate with customers)
3. 고객을 연결하는 블록체인
(Block chain to connect with customer)
예제로 배우는 이더리움 결제구현 (거래소 지갑 구현 예시)Colin Chae
대상
- 이더리움이 어떻게 돌아가는지 알고 싶은 분들
- 이더리움 입출금 개발을 시작하시려는 분들
- Go-ethereum 소스코드 공부하시는 분들
개발스택
- 이더리움 노드 : 설치/운영 수고가 없는 infura.io 사용
- 개발 언어 + 라이브러리 : Go + Geth (as a RPC library)
3.고객을 연결하는 블록체인 (4차산업혁명: 고객과의 소통 신기술의 진화)doo rip choi
4차 산업혁명의 기술들은 소통을 위한 진화 기술로 발전되어 가고 있다.
비즈니스 영역마다 고객과의 소통이 필요하고 신기술을 활용한
고객의 니즈에 맞는 서비스 역량을 가져야 할 것이다.
고객과의 소통을 주제로 3개의 시리즈 물로 발표 자료를 공유 합니다.
고객과의 소통 신기술의 진화,
1. 고객을 이해하는 빅데이터
(The big data platform to understand customers.)
2. 고객과 소통하는 인공지능
( Artificial intelligence to communicate with customers)
3. 고객을 연결하는 블록체인
(Block chain to connect with customer)
This document discusses blockchain sharding as a solution to scalability issues in blockchains. It introduces the concept of sharding where the transaction processing load is distributed across multiple shards to improve overall processing capacity and storage efficiency. Some of the key challenges of implementing sharding are assigning transactions and addresses to shards, achieving consensus across shards, enabling cross-shard communication, and ensuring atomicity of transactions that span multiple shards.
The document discusses multisignature (multisig) addresses and Schnorr signatures. It explains that multisig addresses require signatures from multiple private keys to authorize transactions. Schnorr signatures could improve upon the currently used ECDSA signatures by having shorter signatures and providing signature aggregation for multisig transactions. The document also covers how Practical Byzantine Fault Tolerance (PBFT) consensus protocol works and how Schnorr-based multisignatures could lower communication costs for PBFT from quadratic to linear scaling.
The document discusses web3.js, Truffle, and how to develop decentralized applications (dApps). It provides information on:
- What web3.js and Truffle are and how they interact with Ethereum contracts and the Ethereum Virtual Machine.
- The basic structure of a dApp including smart contracts, frontend using web3.js, and backend also using web3.js to communicate with the blockchain via JSON-RPC.
- Examples of web3.js APIs like sendTransaction and getTransactionReceipt to interact with the blockchain.
This document discusses blockchain sharding as a solution to scalability issues in blockchains. It introduces the concept of sharding where the transaction processing load is distributed across multiple shards to improve overall processing capacity and storage efficiency. Some of the key challenges of implementing sharding are assigning transactions and addresses to shards, achieving consensus across shards, enabling cross-shard communication, and ensuring atomicity of transactions that span multiple shards.
The document discusses multisignature (multisig) addresses and Schnorr signatures. It explains that multisig addresses require signatures from multiple private keys to authorize transactions. Schnorr signatures could improve upon the currently used ECDSA signatures by having shorter signatures and providing signature aggregation for multisig transactions. The document also covers how Practical Byzantine Fault Tolerance (PBFT) consensus protocol works and how Schnorr-based multisignatures could lower communication costs for PBFT from quadratic to linear scaling.
The document discusses web3.js, Truffle, and how to develop decentralized applications (dApps). It provides information on:
- What web3.js and Truffle are and how they interact with Ethereum contracts and the Ethereum Virtual Machine.
- The basic structure of a dApp including smart contracts, frontend using web3.js, and backend also using web3.js to communicate with the blockchain via JSON-RPC.
- Examples of web3.js APIs like sendTransaction and getTransactionReceipt to interact with the blockchain.
2. 서명 스크립트
다중서명(Multisig)
다중서명은 N개의 공개키가 스크립트 내에 기록되어 있고, 예상지출 상태를 풀기 위해서는 이
중 적어도 M개 이상의 개인키가 서명을 제공해야 한다는 조건을 설정함.
잠금 스크립트
M <Public Key 1> <Public Key 2> … <Public Key N> N OP_CHECKMULTISIG
검증 스크립트
OP_0 <Signature B> <Signature C> 2 <Public Key A> <Public Key B> <Public Key C>
3 OP_CHECKMULTISIG
3. 서명 스크립트
다중서명 (Multisig)
다중서명을 사용하면 키를 여러 개 사용해야 하므로 당연히 보안상의 이점이 있다.
[사례 1] 철수가 데스크톱 컴퓨터와 스마트폰에 개인키를 하나씩 보유한
경우(2-of-2 거래), 해커는 철수의 지갑을 해킹하기 위해선
데스크톱 컴퓨터와 스마트폰에 모두 접근해야 하는 어려움이 있다.
[사례 2] A회사에서는 3-of-5 서명 지갑을 생성해 이사회에서 나눠 가졌다.
이 경우 5명의 이사회 임원 중 3명의 동의가 있어야 예산 집행이 가능하다.
16. 서명 스크립트
Benefit of Pay-to-Script-Hash( P2SH )
복잡한 스크립트를 짧게 대체. 잠금 스크립트의 크기를 줄이고 그것을 해제스크립트로 이동.
스크립트 구성의 부담을 송신자에게 넘긴다.
잠금 스크립트의 길이가 줄어 UTXO에 저장되는 용량을 줄여줌.
저장공간의 부담을 현재(payment time)에서 미래(when it is spent)로 이동시킨다.
17. 서명 스크립트
Transaction Locktime
트랜잭션을 일정시간동안 잠궈놓음.
[예시] Alice가 Bob에게 locktime을 3개월을 걸어서 트랜잭션을 보냄.
• Bob 은 이를 3개월이 지나서 사용할 수 있다.
• 3개월동안 Alice는 double-spending 을 할 수 있게되는 문제점이 발생.
• Bob은 Alice의 double-spending을 막을 권한이 없음.
18. 서명 스크립트
Check Lock Time Verify (CLTV)
Output의 redeem script에 timelock을 추가해서 보냄.
current block height + 12,960 (blocks) or current Unix epoch time + 7,760,000 (seconds)
서명에 Bob의 키를 추가하여 Alice가 사용할 수 없게함.
Bob은 3개월 이후에 사용할 수 있음.
19. Segregated Witness
Segwit
비트코인의 합의 과정과 네트워크 프로토콜을 업그레이드함.
블록의 구조를 보면 서명과 거래내역이 하나로 뭉쳐있음.
블록의 크기를 1MB로 제한하면서 서명부분을 분리시켜 거래내용을 더 많이 담자.
서명란
거래내용
서명이 실제로 차지하는
크기는 크지않지만
서명란 자체가 차지하는
부피가 크다.
거래내용 서명란