본문 바로가기

분류 전체보기

(10)
upgradable smart contract - Contract Migration 전략 지난번 스마트 컨트랙트 패턴에서 언급되었던 Contract Migration 에 대해서 작성해 보겠습니다.  사실 이 방법은 가장 단순하고 무식한 방법이지만 가장 확실한 방법입니다.  Contract Migration 전략은 언제나 필요합니다.  왜냐하면 버그가 없거나 기능이 완벽한 스마트 컨트랙트 임에도 개인키가 해킹되어 스마트 컨트랙트 지갑은 손상이 될 수 있습니다. 이 경우에는 upgradable 기능이 있는 컨트랙트라 하더라도, 새롭게 컨트랙트를 만들어 배포하고 사용자들의 정보를 복구하는 것이 유일한 방법입니다.  따라서 항상 우리는 스마트 컨트랙트를 배포할때 Contract Migration 에 대한 방안을 고민해야 합니다.  마이그레이션의 일반적인 절차는 아래와 같습니다. 1. 블록체인에서 해..
스마트컨트랙트를 업그레이드 가능하게 하는 5가지 전략 팀 내에서 발표를 했던 Upgradable Smart Contract 에 대해서 공유해 보고자 합니다. 일반적으로 스마트 컨트랙트는 immutable  이라고 알고 있습니다. 그런데 왜 업데이트 할려고 할까요?   주요한 이유중에 하나는 바로 해킹으로 인해 컨트랙트가 손상 되었을 경우를 대비하고자 함입니다.  최근에는 이러한 이유에서 추가적으로 계약의 기능을 변경하고자 하는 경우에 많이 사용이 됩니다. immutable 한 컨트랙트를 변경을 한다니 참 아이러니 한데요. 정확하게는 변경이 아니라 업그레이드를 하는 것입니다. 스마트 컨트랙트가 immutable 한다는 것은 변하지 않습니다. 다만 새로운 스마트 컨트랙트를 배포하고, 스마트 컨트랙트와 상호작용시에 새로운  스마트 컨트랙트와 동작하도록 변경함으로..
솔라나 개발을 위한 개발환경 구성 3 (hello_solana 배포하기) 로컬환경에서 Rust 로 온체인 프로그램 (스마트컨트랙트) 를 작성해보고 빌드 및 배포를 진행합니다. 1. 먼저 솔라나 CLI를 활용해서 로컬호스트의 validator를 실행하고, 새로운 터미널을 엽니다. (이전 게시글에서 그대로 오셨다면 이미 validator가 실행 중입니다) solana-test-validator 2. cargo 패키지를 통해서 라이브러리 hello_solana를 생성합니다. 컴파일된 솔라나 프로그램은 BPF(Berkeley Packet Filter) 바이트코드로 .so 형식으로 저장됩니다. cargo init hello_solana --lib cd hello_world 3. solana-program crate 를 추가합니다. crate는 여러 Rust소스코드파일들을 묶어서 하나의..
솔라나 개발을 위한 개발환경 구성 2 (Rust, CLI, Anchor, Wallet) 계속해서 윈도우에서 솔라나 개발을 위한 환경 구성을 시작하겠습니다. WSL과 Vs Code 설치법은 이전 글을 참고 부탁드립니다. https://madev.tistory.com/7 Ubuntu 22.04 (WSL) 에서 Rust설치, Solana CLI, Anchor, Wallet 파일 생성에 대해 설명합니다 1. 솔라나 개발을 위한 몇 가지 소프트웨어 패키지를 설치해 주겠습니다. sudo apt-get install -y \ build-essential \ pkg-config \ libudev-dev llvm libclang-dev \ protobuf-compiler libssl-dev 2. Rust를 설치를 위해서 공식 설치관리자인 rustup을 사용해서 rustc (러스트 컴파일러) 와 cargo(..
솔라나 개발을 위한 개발환경 구성 1 (윈도우 - WSL설치) 솔라나에서 컨트랙트를 개발하고 배포하기 위해서 개발환경을 구성합니다 솔라나는 리눅스와 MAC OS를 지원하기 때문에 윈도우에서는 WSL을 설치를 먼저 해야 합니다. 윈도우에서 WSL을 설치하고, VS Code를 Editor로 설정 과정을 설명하고 있습니다. 1. Power Sehll 을 실행 wsl을 실행합니다. 저는 docker-desktop을 설치하면서 wsl 설치가 미리 되어 있었습니다. wsl --install 2. 설치가 가능한 리눅스 시스템을 조회합니다. 저는 ubuntu 22.04 lts 버전을 설치하겠습니다. wsl --list wsl --install -d Ubuntu-22.04 3. 설치가 되면 아래와 같은 창이 출력하게 됩니다. 4. 다음은 VS code와 연결하여 Editor를 설정..
SQL 기초 - 1. DDL 앞서 RDBMS 에서 말한 모델의 구조를 활용해서 실습을 해 보도록 한다. 먼저 실습 테이블을 만들어야 되는데 book 테이블의 구조는 아래와 2차원으로 표현해 볼 수 있다. BOOK_ID (PK) BOOK_NAME AUTHOR_ID (FK) DESCRIPTION 1 Oracle 실습 A0001 오라클 실습을 정리한 책 2 대용량데이터베이스 A0001 RDBMS 대용량 관리를 정리한 책 3 친철한 SQL튜닝 A0002 DBA를 위한 튜닝과정 4 2023블록체인 A0003 블록체인 보고서 DDL은 위와 같은 형태로 데이터를 저장하기 위한 골격을 정의하는 언어이다. 테이블명을 지정하고, 어떤 열이 들어가는지 그 열에 들어가는 데이터는 어떤 종류인지를 정의한다. 그리고 각 테이블이 가지는 제약조건 역시 지정하..
DBMS 기본 - 4.SQL 개요 SQL 이란 DBMS에서 데이터를 처리하기 위해서 사용하는 언어이다 구조화된 질의어(Structured Query Language) 로 ANSI 에서 표준을 정의하고 있다. 각각의 벤더사 (Oracle, MySQL, PostgreSQL) 마다 추가적인 기능들을 제공하고 있다 SQL은 비절차적 언어로 내부의 처리 과정을 사용자가 신경쓰지 않아도 된다. SQL은 아래와 같이 분류될 수 있다. SQL을 작성할때는 일반적으로 아래와 같은 작성 원칙을 준수한다 1. SQL 문은 대소문자를 구분하지 않는다 2. SQL 문은 하나 이상의 줄에 입력할 수 있음 3. 일반적으로 키워드는 대문자로 입력하고 테이블, 열이름은 소문자로 입력 4. 키워드는 약어로 쓰거나 여러줄에 나눠 쓸 수 없음 5. SQL 문장이 끝났을때 ..
DBMS기본 - 3. RDBMS RDB는 무엇이길래 오라클이 DBMS의 시장을 선점하고, 지금까지 굳건할까? RDB는 관계(Reloation) 형으로 데이터를 관리하는 DB 이다. 개체 - 관계 모델로 데이터를 표현하고 이를 테이블 (표) 로 변환하여 저장한다. 즉.. 현실에서 관심있는 데이터를 개체-관계 모델로 표현하고, 2차원 테이블 구조로 데이터를 저장한다고 말할 수 있다. 개체는 다른 말로 Entity(엔터티) 라고 말하기 때문에 우리는 개체 관계로 표시한 모습을 ERD 라고 부른다. Entity Relation Diagram 예를 들어 보면 " 사내 도서관 시스템을 구축하고자 한다. 도서에 대한 정보는 도서의 제목과 설명으로 이루어지고 도서를 집필한 작가에 대한 정보를 관리하여 작가가 집필한 도서를 볼 수 있다. " 우리의 목..
DBMS 기본 - 2. 역사 데이터베이스 역시 전쟁으로 인해 발전이 되었다. 1950년 군비를 효과적으로 관리하기 위해서 개발된 프로그램이다. 데이터의 기지라는 뜻으로 데이터베이스라고 불리게 되었다. 이후 Oracle에서 RDB를 최초로 출시를 하였다. 그리고 OODB (객체지향)의 개념까지 흡수를 하였다. 2000년도에 구글의 BigTable이 출시가 되었으며 2010년 SNS회사들의 NoSQL을 도입을 하게 되었고 BigData가 이슈화 되면서 NoSQL은 춘추전국 시대가 되었다. 오라클의 가격은 높으나 그만큼의 성능과 효율성을 제공하기에 많은 기업들은 오라클 DBMS를 사용한다 때문에 앞으로 작성될 SQL이나 설명들도 들도 가급적 표준형으로 작성을 하겠지만, 오라클에 조금 더 가중치를 둘 수 밖에는 없다 1950년 : 군사비용..
DBMS 기본 - 1. DB와 DBMS정의 데이터베이스의 과거와 현재까지의 흐름을 이야기 해보고자 한다. 그 전에 데이터베이스(DB)란 무엇이며 데이터베이스관리스시템(DBMS)은 무엇일까? 데이터베이스(DB)는 여러사람에 의해 공유되어 사용될 목적으로 통합하고 효과적으로 관리하는 데이터의 저장소 이다. 데이터베이스 관리시스템(DBMS) 는 여러 사람들이 데이터베이스를 효과적으로 사용할 수 있도록 데이터의 처리와 관련된 데이터베이스를 관리하는 시스템 이다. 대표적인 DBMS는 Oracle, MySQL, PostgerSQL, SQL Server등이 있다. 데이터베이스는 데이터 요구사항을 반영하고, 효과적으로 데이터를 통합, 관리 할수 있는 저장소이다. 데이터베이스는 하나의 개념으로 통용된다. IT에서 데이터가 저장된다고 이야기 하면 대부분 DB에 저..