2023-05-10
열정사자 Week1
// _a의 글자를 모두 string형태로 뽑아내기
function bytesToString5(string memory _a) public pure returns(string memory) {
bytes memory l = bytes(_a); // 먼저 문자열의 길이를 구한다.
bytes memory _b = new bytes(l.length); // 문자열의 길이 만큼 bytes의 자리수를 할당해준다.
for(uint i=0; i<l.length; i++) { // for문을 통해 자릿수만큼 실행.
_b[i] = bytes(_a)[i];
}
return string(_b);
}
-> 배열이 아닌 문자열의 길이는 bytes로 변환후 .length를 통해 가능
블록체인(비트코인)이 필요한 이유
이 네트워크에서는 해시 기반의 작업증명 체인에 거래를 해시화하고 타임스탬프를 날인
함으로써 해당 작업증명을 다시 수행하지 않고는 변경할 수 없는 기록을 생성한다.
-> 신뢰할 수 있는 제 3자의 역할을 P2P 네트워크에게 맡김
새로운 신뢰할 수 있는 제 3자의 역할이 필요한 이유
-> 중재 비용이 발생하면 거래 비용이 증가해 실제 거래할 수 있는 최소 금액
이 제한되고 소액의 일상 거래가 불가능해지며 한 번 제공되면 회수할 수 없는 서비스에 대한 결제의 번복을 막을 수 없게 되어 더 큰 손실이 발생한다. 결제가 번복될 가능성이 남아 있으면 신뢰할 수 있는 제3자의 필요성이 더욱 커진다. 판매자는 귀찮게 불필요한 정보까지 요구하면서 소비자를 경계하게 된다. 어느 정도의 사기 가능성은 불가피한 것으로 인정된다. 이러한 비용과 지불의 불확실성은 두 사람이 직접 만나 실물 화폐를 사용하면 피할 수 있으나 온라인에서 신뢰할 수 있는 제3자 없이 지불할 수 있는 메커니즘은 존재하지 않는다.
비트코인의 역할
-> 따라서 필요한 것은 신뢰 대신 암호화 증명에 기반한 전자 지급 시스템으로, 이를 통해 신뢰할 수 있는 제3자에 의존하지 않고 거래 의사를 가진 두 당사자가 직거래를 할 수 있게 해 주는 것이다. 거래를 전산적으로 철회할 수 없도록 만들면 판매자들을 사기로부터 보호하고 통상적인 에스크로 메커니즘을 간편하게 구현하여 구매자를 보호할 수 있을 것이다. 이 논문에서 우리가 이중지불 문제에 대한 해결책으로 제시하는 것은 거래가 발생한 시간 순서의 계산 증명을 생성하는 P2P 분산 타임스탬프 서버이다. 이 시스템에서 정직한 노드가 통제하는 CPU 자원이 공격자 집단에 속한 노드보다 많으면 이 시스템은 안전하다.
논문 잘 읽는 법
Abstract - 초록(요약) 먼저 보기 -> 서론 -> 결론 부터 싹 훑기
비트코인 백서에는 신기하게도 '블록체인'이라는 단어가 없다.