X -> (해쉬함수) -> H(X) // eazy
H(X) -> (해쉬함수) -> X // hard
if (X == Y) than H(X) == H(Y)
if (X != Y) than H(X) != H(Y)
if H(X) == H(Y) than (X == Y)
결과값으로 0xwi9gaME3IRba43n... 와 같은 64자가 나옴. // 0x~로 시작하는 값은 거의 대부분 해쉬에서 뭐 해서 나온거네~라고 생각하면 된다.
그런데 16진수는 2자리씩 잡아먹으므로 32개의 16진수 -> 32byte(x8) = 256bit
블록체인 마다 새로운 블록이 생성되면 이를 정규로 인정할지를 합의하는데 차이가 있다. 단순히
^ public | 클레이튼 | 비트코인, 이더리움 | permissionedㅡㅡㅡㅡㅡ|ㅡㅡㅡㅡㅡㅡㅡ> permissionless (참여 제한) | (참여 제한 없음) 리플 | | | private
카이사를 암호 : a->c b->d c->e ...와 같이 n칸 뒤의 알파벳으로 변환하는 단순한 암호
비대칭 키암호 : 모든 사람에겐 공개키와 비밀키가 있다. 공개키는 모두에게 공개되어있다. 만약 A가 B에게 메세지를 보낸다면
- A의 메세지는 B의 공개키로 암호화된다.
- 인터넷에서 암호화된 메세지가 전송된다.
- B는 자신의 비밀키로 메세지를 해독한다.
전자서명: 만약 G라는 사람이 B의 공개키로 악의적인 메세지로 보낸다면 어떨까? B는 누가 보냈는지 모르는 메세지를 받는다면 말이다. 이를 위해 전자서명을 추가하였는데
- A의 메세지는 B의 공개키로 암호화된다. 동시에 A의 비밀키로 암호화한 사인을 보낸다.
- 인터넷에서 암호화된 메세지와 사인이 전송된다.
- B는 자신의 비밀키로 메세지를 해독하기 전에 A의 공개키로 사인을 해독하여 true값이 나오면 A가 전송한 것을 알 수 있다.
{
nounce : 1, // 어카운트 기반에서 보인다. 몇번째 트랜잭션을 발행했는지를 나타내며 이중 결제를 막는다.
from : '0xa3K2iEIM4~', // sender, 이더리움에는 이를 생략함
to : '0xiem2mIsiJI~', // 받는 사람의 주소
value : 10 // 10코인
}
클레이튼 :
type: 'VALUE_TANSFER' // 이 트랜잭션이 무엇인지 설명
nonce: '0x01',
gasPrice: '0x05d21~',
gas: '0x0493e0',
value: '0x01',
to: '0x ~',
from: '0x ~',
v: '0x07f6',
r: '0x5f36aad~',
s: '0x709ee~'