Gas? 트랜잭션을 발행하는 노드는 트랜잭션에 Gas라는 수수료를 포함시킨다.이 트랜잭션을 수신한 노드중 채굴 노드가 만약에 블록 채굴에 성공했고 그 블록에 방금 수신된 트랜잭션을 포함시켰을 경우에 그 트랜잭션에 들어있던 수수료인 Gas를 채굴 보상으로 받게 되는것이다. 채굴자는 기본급(기본 채굴 보상) + 인센티브(그 블록에 포함된 트랜잭션들에 들어있는 수수료인 Gas) = 총합 Ether를 채굴 보상으로 받게 되는 것이다. 트랜잭션을 발행할때, 스마트 컨트랙트를 한줄 한줄 실행할때 모두 Gas가 필요하다. solidity 언어로 작성된 스마트 컨트랙트는 EVM(Etherium Virtual Machine)위에서 작동한다. 엄밀히 말하면, 이 언어가 solidity 컴파일러로 번역되면 solidity ..
전자서명 문서를 전자서명해서 전송하는 과정 1. 문서를 해쉬한다. (고정길이 해쉬값으로 문서를 압축)2. 그 해쉬값을 자신의 비밀키로 한번더 암호화 한다.(전자서명)3. 그 암호화된 문자열을 기존의 문서에 덧붙인다.4. 전자서명 + 문서를 전송한다. 전자 서명된 문서를 수신하는 과정 1. 문서를 받아서 보낸사람의 공개키로 전자서명된 부분을 복호화 한다.-> 복호화 하면 문서를 해쉬한 고정길이 해쉬값이 나오게 될것이다. 2. 수신된 문서의 전자서명된 부분을 제외한 나머지 원래의 문서를 같은 해쉬함수로 해쉬해서 해쉬값을 구한다. 1번과 2번의 해쉬값을 비교해서 일치할 경우 그 사람이 이 문서를 보냈다는것이 확실하게 인증 된다. 이것을 비밀키 공개키를 활용한 전자서명이라고 한다. 블록체인에서는 어떤 노드가 트..
블록체인 처리 흐름 1 블록체인 네트워크에 있는 사용자 A~F중 A,B,E가 송금을 의뢰한다.(트랜잭션을 발행시킨다.)트랜잭션을 발행시킬때 그 트랜잭션을 자신의 개인키로 전자서명해서 전송한다. 그렇게 되면 수신하는 측에서는 그 송신자의 공개키로 복호화 할수 있으므로, 그것이 진짜 그사람이 보낸것인지 확인이 가능하다. 블록체인 처리 흐름 2 트랜잭션이 블록체인 네트워크에 브로드 캐스트 되며, 결국엔 모든 노드들이 네트워크에서 발생한 동일한 트랜잭션을 수신하게 된다. 블록체인 처리 흐름 3 트랜잭션을 수신한 노드중 채굴자 노드는 그 트랜잭션을 공개키로 검증하고, 열심히 블록을 채굴하기 시작한다.블록을 채굴한다는 의미는 블록 헤더에 포함된 6가지 정보(NONCE,블록 생성 시각, 이전 블록 해쉬값, 머클해쉬 ..
블록을 블록체인 내에서 유일하게 식별할수 있게 블록해쉬라는게 존재한다고 했었다. 이 블록해쉬값은 위 그림에서 핑크색으로 표시된 값이다.한마디로 말해서 블록체인 내에서 그 블록이 갖는 아이디라고도 볼 수 있으며, 이 블록해쉬값은 블록헤더를 요약한 어떤 해쉬값이다.블록 헤더에 포함된 6가지 정보를 묶어서 해쉬에 넣으면 블록 해쉬값이 나오게 되고 이 블록 해쉬값은 이 블록의 아이디가 된다. 그렇기 때문에 이 6가지 정보중 어떤 하나라도 변경되게 되면 블록 해쉬값이 달라지게 된다. 그 말 뜻은, 마음대로 블록 헤더에 있는 값을 바꿀수 없다는 의미이다. 왜냐면, 블록들은 서로 연결되어 있기 때문에 만약에 블록0의 내용을 누가 임의로 수정하게 될 경우 그 블록해쉬값이 달라지게 되고, 그렇게 되면 블록1의 Previ..
블록체인 네트워크 내에 A라는 노드가 현재 5BTC를 가지고 있는데 B,C노드에게 각각 5BTC를 전송하려고 하는 상황을 가정해보자. 원래 현실세계에서는 이런 일이 불가능한 일이다. 잔액이 5BTC인데 총 10BTC를 송금하려고 하는 상황이기 때문이다. 하지만 블록체인 내에서는 이 이중 지불 자체는 가능하다. 왜냐하면, 네트워크 내의 모든 노드들이 같은 블록체인을 갖고 있다. 이 뜻은, 모든 거래 내역이 저장된 똑같은 내용의 거래 장부를 모든 네트워크 내의 노드가 가지고 있다는 소리이다. 따라서 내가 캐나다에 있는 컴퓨터에서 이 블록체인 네트워크에 접속하게 될 경우 그 컴퓨터에서 B에게 5BTC를 보내고, 호주에 있는 컴퓨터에서 C에게 5BTC를 보내는 일이 가능하다. 왜냐면 캐나다에서 BTC를 송금한다..
앞에서 블록 체인은 거대한 분산 공개 장부라고 했다. 이 분산 공개 장부는 여러 개의 노드에 복사되어 있으며, 여러 개의 노드는 p2p로 연결되어 블록 체인 네트워크를 형성한다. 그리고 하나의 거래 정보가 발생하면 이 거래 정보는 블록 체인 네트워크에 분산되어 있는 수많은 노드에 전파되어야 한다.다음 그림과 같이 사용자 F가 지갑 앱에서 C에게 수수료 0.001BTC와 함께 1.6BTC를 보내면, 지갑 앱은 블록 체인 네트워크 상의 노드 A에 거래 정보를 전송한다.거래 정보를 받은 노드 A는 먼저 해당 거래의 유효성을 검증한 후에 그 거래를 아직 블록 생성 작업이 시작되지 않은 후보 블록에 추가하고, 인접한 다른 노드에 그 거래 정보를 전파한다.거래 정보를 전파받은 노드 B도 마찬가지 방식으로 블록 체인..
어떤 블록을 생성하기 위한 난이도가 백만이라고 해보자. Brute force 방식으로 nonce 값을 계속 조정해가면서 백만보다 낮은 숫자를 찾는 과정이 마이닝(채굴)과정이다. brute force방식이므로 빠르게 뺑뻉이 연산을 돌릴수 있는 하드웨어가 필요하고 엄청난 전기세가 필요하므로 요즘 전기세나 땅값이 싼 중국에 작업장을 차려놓고 마이닝하는 업체들이 많아지고 있는것이다. 만약에 예를들어서, nonce값이 10일때 해쉬함수에 넣어서 나온 해쉬값이 백만보다 낮은 경우 채굴에 성공한 것이고, 그런 경우 블록에 이 넌스값(블록을 생성하기 위해 찾아낸 어떤 해답이라고 볼수 있음)을 박고, 넌스값이 포함된 블록 헤더를 해쉬한 블록해쉬값을 적어서 네트워크에 전파시키는것이다(너네들 이 블록을 각자 블록체인에 추가..
- Total
- Today
- Yesterday
- async
- mobx
- Action
- es6
- useRef
- state
- await
- react hooks
- reflow
- typescript
- reducer
- computed
- return type
- react
- Babel
- atomic design
- storybook
- type alias
- javascript
- reactdom
- webpack
- rendering scope
- props
- useEffect
- design system
- Polyfill
- hydrate
- Next.js
- promise
- server side rendering
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |