본문 바로가기

전공

(54)
이더리움 스마트 컨트랙트 이더리움의 두 가지 계정 유형이더리움 네트워크에서 작동하는 모든 엔티티는 외부 소유 계정(EOA) 또는 컨트랙트 계정(CA)의 형태를 가진다. EOA (Externally Owned Account):EOA는 사용자가 개인 키를 통해 제어하는 계정. EOA는 거래를 생성하고 이더를 전송하거나, 스마트 컨트랙트와 상호작용할 수 있다.EOA는 일반적인 사용자 계정으로, 트랜잭션의 서명을 통해 이더리움 네트워크와 상호작용한다. 중요한 점은, 개인 키를 통해 거래의 승인 및 실행이 이루어진다는 것이다.CA (Contract Account):CA는 스마트 컨트랙트를 배포함으로써 생성되는 계정이다. CA는 코드로 제어되며, 외부 트랜잭션이 전달될 때마다 자동으로 그 코드에 따라 실행된다.EOA와 달리 CA는 거래를 ..
Sort) Quick Sort, Merge Sort, Heap Sort 1. 퀵 정렬 (Quick Sort): O(n log n) ~ O(n²) def quick_sort(arr): if len(arr) pivot] return quick_sort(left) + middle + quick_sort(right) 2. 병합 정렬 (Merge Sort): O(n log n) def merge_sort(arr): if len(arr)  3. 힙 정렬 (Heap Sort): O(n log n)import heapqdef heap_sort(arr): heapq.heapify(arr) # 리스트를 힙으로 변환 return [heapq.heappop(arr) for _ in range(len(arr))]
Sort) Bubble Sort, Selection Sort, Insertion Sort 1. 버블 정렬 (Bubble Sort):  O(n²)def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr 2. 선택 정렬 (Selection Sort): O(n²) def selection_sort(arr): n = len(arr) for i in range(n): min_idx = i for j in range(i+1, n): if arr[j]  3. 삽입 정렬 ..
블록 크기, 포크, 오디널즈 1. 블록 크기와 확장 솔루션비트코인의 블록 크기는 한 블록에서 처리할 수 있는 거래 수를 결정하는 중요한 요소이다. 기본적으로 비트코인의 블록 크기는 1MB로 제한되어 있어, 거래가 몰릴 때는 네트워크 혼잡과 거래 처리 지연이 발생할 수 있다.1.1 블록 크기 증가이 문제를 해결하기 위해 블록 크기를 늘려 한 번에 더 많은 거래를 처리할 수 있도록 하자는 의견이 나왔다. 그중 대표적인 제안이 SegWit2x있다.SegWit2x: SegWit과 블록 크기 증가를 결합한 것이다. SegWit은 거래 서명 데이터를 별도의 공간에 저장함으로써 블록 내 공간을 효율적으로 사용하는 방식이다. "2x"는 블록 크기를 2MB로 증가시키려는 제안이지만, 커뮤니티 내에서 큰 논란을 일으켰다.확장성 문제를 해결하는 방법에..
암호기술과 채굴의 이해 1. 블록체인의 암호기술크립토그래픽 해시함수 (단방향 알고리즘)SHA256-HASH:고정된 길이의 출력을 생성.동일한 입력에 대해 항상 같은 출력을 제공.입력 데이터가 조금이라도 변경되면 완전히 다른 출력이 생성.역연산이 불가능하여 보안성이 높음.비대칭키 암호 (양방향 알고리즘)대칭키 암호: 송신자와 수신자가 동일한 키를 공유.비대칭키 암호: 개인키와 공개키를 사용하여 보안성을 강화.타원곡선 암호화: 개인키와 공개키, 디지털 서명 등을 활용하여 지갑 주소를 생성.프로세스: 개인키 → 공개키 → 주소2. 채굴의 역할사용자와 채굴자의 차이사용자:비트코인을 송수신하고 거래를 진행합.개인 지갑(라이트노드)을 사용하여 자신의 거래를 관리.채굴자:비트코인 거래 내역을 기록하고 검증하는 역할.풀노드/채굴노드 및 채굴..
DP) Dynamic Programming optimization problen 문제를 해결하는 최적의 답 maximum, minimum을 구하는 문제 => 가장 빨리 도착하는 경로의 소요 시간?, 주식을 사고 팔 때 가장 높은 수익? 다이나믹 프로그래밍 큰 문제를 작은 문제로 나눠서 푸는 방법 큰 문제를 작은 문제를 여러 번 재사용한다는 특징을 이용함 이전의 작은 문제의 값을 기억하고 같은 문제가 나오면 저장해둔 결과를 가져옴 다이나믹 프로그래밍 2가지 조건 최적 부분 구조(Optimal Substructure): 작은 문제들의 해결 방법을 합치면 큰 문제 단, subproblems이 독립적이어야 함 중복되는 부분(Overlapping Subproblems): 문제를 작은 문제로 나누었을 때, 동일한 문제가 반복적으로 발생하는 경우 다이나믹 프..
Stack) Stack Stack 데이터를 입시 저장하기 위한 선형 자료구조 후입후출 'LIFO' (Last in First Out) 마지막에 들어온 요소가 가장 먼저 나감 Stack의 기본 연산 Push: 스택의 맨 위에 새로운 요소 추가 Pop: 스택의 맨 위 요소를 제거 Peek: 스택의 최상위 요소를 조회함 IsEmpty: 스택이 비어있는지 확인 import java.util.Stack; public class StackExample { public static void main(String[] args) { // 스택 생성 Stack stack = new Stack(); // Push 연산 예시 stack.push(1); // 스택에 1 추가 stack.push(2); // 스택에 2 추가 stack.push(3); ..
Queue) Priority Queue Priority Queue 우선순위를 가진 Queue이다. 동일한 우선순위를 가진 요소는 FIFO 원칙이 적용된다. 활용 import java.util.PriorityQueue; PriorityQueue priorityQueue = new PriorityQueue(); priorityQueue.add(5); priorityQueue.add(1); priorityQueue.add(3); // 1이 가장 높은 우선순위를 가지므로, 1이 먼저 출력. System.out.println(priorityQueue.poll()); // 출력: 1 Deque 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 큐 양방향으로 처리가 가능 활용 import java.util.ArrayDeque; import java.util...

728x90
반응형