본문 바로가기

전체 글

(42)
[Blockchain In Action] 3장 신뢰와 무결성을 위한 기법 Blockchain In Action 3장. 블록체인 인 액션 책을 읽고 공부한 내용을 기록한 글 입니다. 글에 나와있는 내용과 사진은 모두 블록체인 인 액션에 포함된 내용 혹은 이를 정리한 것 입니다. 문제가 될 시 삭제하겠습니다. 신뢰 신뢰와 무결성은 탈중앙화 시스템에서는 특히 중요하다. 탈중앙화 시스템에서는 블록체인이 중개자의 역할을 대신해서 신뢰 및 중개자의 역할을 해결한다. Blockchain in action 책에서는 신뢰 및 무결성의 구성을 두 개의 사분면 차트로 나타낸다. 신뢰는 시스템에 참여하는 피어 참여자의 신용에 대한 척도다. 블록체인 기반 시스템에서는 참여자의 관련 데이터와 트랜잭션에 관해 확인과 검증을 하고, 이해관계자들의 합의에 따라 적절한 정보를 변조 불가능하게 저장함으로써 신..
[Blockchain In Action] 스마트 컨트랙트의 Best Practice 스마트 컨트랙트를 만드는 과정에서 개발자는 무엇을 고려해야 하는가? 1. 블록체인 기능이 개발할 애플리케이션에 반드시 필요한 지를 확인해야 한다. 블록체인 기반 솔루션과 스마트 컨트랙트는 모든 문제에 대한 만병 통치약이 아니다. 개발할 애플리케이션에 블록체인 기능이 필요하지 않을 수도 있다. 2. 스마트 컨트랙트가 개발할 애플리케이션에 반드시 필요한 지를 확인해야 한다. 스마트 컨트랙트는 체인에 있는 모든 참여자에게 보이고, 그들의 풀 노드상에서 실행된다는 점을 염두에 두어야 한다. 스마트 컨트랙트는 단일 노드 계산을 위한 것이 아니다. 또한 스마트 컨트랙트는 기존의 클라이언트/서버 또는 내재적인 stateless 분산 솔루션을 대체하는 것이 아니다. 스마트 컨트랙트가 필요한 경우는 강제할 규칙, 규정,..
[Blockchain In Action] 2장 스마트 컨트랙트란? Blockchain In Action 2장. 블록체인 인 액션 책을 읽고 공부한 내용을 기록한 글 입니다. 글에 나와있는 내용과 사진은 모두 블록체인 인 액션에 포함된 내용 혹은 이를 정리한 것 입니다. 문제가 될 시 삭제하겠습니다. 스마트 컨트랙트 스마트 컨트랙트는 애플리케이션(Dapp?)의 규칙과 규정들을 디지털로 정의하고, 검증하고, 검사하며 강제하기 위한 블록체인에서 작동시킬 수 있는 실행 가능한 코드다. 스마트 컨트랙트는 제 3자 없이도 신뢰할 수 있는 트랜잭션의 수행을 지원한다. 이러한 트랜잭션은 추적하고 되돌릴 수 없다. 스마트 컨트랙트와 블록체인 프로그래밍의 설계와 구현을 위해서는 세 가지가 필요하다. 1. 블록체인 플랫폼 2. 스마트 컨트랙트를 코딩하기 위한 언어 3. 개발, 컴파일, 배..
[Blockchain In Action] 1장 블록체인의 기초. Blockchain In Action 1장. 블록체인 인 액션 책을 읽고 공부한 내용을 기록한 글 입니다. 글에 나와있는 내용과 사진은 모두 블록체인 인 액션에 포함된 내용 혹은 이를 정리한 것 입니다. 문제가 될 시 삭제하겠습니다. 블록체인 이해하기 많은 사람들은 초기에 은행과 같은 중개자 없이도 인간이 만든 경계를 넘어 전 세계 누구에게나 디지털 화폐를 P2P로 전송할 수 있다는 사실에 열광했다. 트랜잭션은 소유권, 증서, 음악, 예술, 비밀 코드, 회사들 간의 계약, 자율 운행 결정, 매일 일어나는 일상 활동에서 비롯되는 수많은 결과물을 포함한다. 트랜젝션 레코드는 블록체인 프로토콜과 애플리케이션에 기반한 다른 상세 정보도 아우른다. 책에 나와있는 그림 1.2 (이더리움 퍼블릭 블록체인의 스냅샷)을..
[Python] BOJ 백준 21943 연산 최대로 문제 N개의 양의 정수 X{i}와 곱하기 연산자, 더하기 연산자가 총 N−1개가 존재하고 괄호는 무수히 많이 사용해도 된다. 이 연산에는 곱하기 연산자와 더하기 연산자의 우선순위가 동일하다. 정수와 연산자는 아래와 같이 배치해야한다. 정수의 순서는 바꿔도 상관없다. 예를 들어 정수 1, 2, 3이 있고 더하기 연산자와 곱하기 연산자가 각각 하나 있다고 가정하면 아래와 같이 만들 수 있다. 예를 들어, 수 1,2,4,5,7,8와 더하기 연산자가 4개 곱하기 연산자가 1개 있다고 하자. 괄호를 이용하여 최대값을 구하는 방법 중 일부이다. (((1+2)+4)+7)×(5+8) ((1+2)+(4+7))×(5+8) (1+(2+4)+7)×(5+8) (1+2+4+7)×(5+8) 연산을 잘 이용하여 값을 최대로 만들어 ..
[Python] BOJ 백준 21942 부품 대여장 문제 송훈이는 로봇 동아리 회원이다. 로봇 동아리에서 필요한 부품이 있을 경우 자유롭게 빌려서 쓰고 다시 돌려놓으면 된다. 하지만 부품 정리를 하다가 부품 관리가 너무 힘들어져 새로운 시스템을 도입하려고 한다. 부품을 빌려갈 경우 부품 대여장에 정보를 반드시 작성해야한다. 또한 빌려간 부품을 반납 할 경우에도 부품 대여장에 정보를 작성해야한다. 또한 대여기간을 정하고 대여기간을 넘길 경우 1분당 벌금을 부여하도록 하는 시스템이다. 만약 대여기간이 5분, 1분당 벌금이 5원이라 했을 때 대여한 시각이 2021년 1월 1일 1시 5분이라면 2021년 1월 1일 1시 10분까지 반납해야한다. 2021년 1월 1일 1시 14분에 반납을 했다면 4분 늦었기 때문에 벌금을 20원을 내야한다. 부품 대여장에 쓰는 형..
[Python] BOJ 백준 21941 문자열제거 문제 지우고 싶은 문자열 S와 지울 수 있는 문자열 A{1}, A{2}, ..., A{M}이 주어진다. 문자열 A{i}들은 각자 X{i}라는 점수를 가진다. 이 때, 문자열 S를 삭제 연산을 이용하여 모두 제거하려고 한다. 삭제 연산은 두 가지 방법이 존재하며, 원하는 만큼 여러 번에 걸쳐서 수행할 수 있다. 문자열 S의 부분 문자열 중에 문자열 A{i} 가 존재한다면 해당하는 부분을 지우고 X{i} 만큼의 점수를 얻는다(여러 부분 존재해도 한 번만 지운다). 문자열 S에서 문자 하나를 지우고 점수를 1점을 얻을 수 있다. 예를 들어, 문자열 S가 "abcxyzxabc"이 있고 "abc" 문자열을 지울 경우 10점, "xyz" 문자열을 지울 경우 5점을 얻는다고 하자. 문자열을 모두 제거하여 최대 점수를..
[Python] BOJ 백준 21940 가운데에서 만나기 문제 준형이는 내일 친구들을 만나기로 했다. 준형이와 친구들은 서로 다른 도시에 살고 있다. 도시를 연결하는 도로는 일방 통행만 있어서 도시 A{i}에서 도시 B{i}로 가는 시간과 도시 B{i}에서 도시 A{i}로 가는 시간이 다를 수 있다. 준형이와 친구들은 아래 조건을 만족하는 도시 X를 선택하여 거기서 만나려고 한다. 왕복시간은 자신이 살고 있는 도시에서 도시 X로 이동하는 시간과 도시 X에서 다시 자신이 살고 있는 도시로 이동하는 시간을 합한 것이다. 준형이와 친구들이 도로를 이용하여 갈 수 있는 도시만 선택한다. 준형이와 친구들의 왕복시간 들 중 최대가 최소가 되는 도시 X를 선택한다. 준형이와 친구들이 이동할 수 있는 도시가 최소한 하나 이상이 있음을 보장한다. 도시가 많다보니 계산하기 힘들..