본문 바로가기

[BLOCKCHAIN]

(8)
Solidity 패턴 분석 - Access Restriction Access Restriction Intent 적절한 기준에 따라 컨트랙트 기능에 대한 액세스를 제한합니다. Motivation 블록체인의 공개적 특성으로 인해 컨트랙트에 대한 완전한 프라이버시를 보장할 수 없습니다. 모든 컨트랙트가 공개되기 때문에 다른 사람이 블록체인에서 컨트랙트 상태를 읽는 것을 막을 수 없습니다. 할 수 있는 일은 다른 컨트랙트에 의해 컨트랙트 상태에 대한 읽기 액세스를 제한하는 것입니다. 이는 상태 변수를 private 으로 선언하면 됩니다. 또한 함수를 private 으로 선언할 수 있지만 그렇게 하면 컨트랙트 범위를 벗어난 모든 사람이 어떤 상황에서도 함수를 호출할수 없게 됩니다. 그러나 public으로 선언하면 네트워크의 모든 참가자에게 액세스 권한이 주어집니다. 대부분의 ..
Solidity 패턴 분석 - State Machine State Machine state machine 이란? 컨트랙트가 서로 다른 여러 단계를 거치도록 하는 것 Motivation 초기 상태에서 여러 중간 상태를 거쳐 최종 상태로 전환해야 하는 계약을 고려해봅시다. 각 상태에서 컨트랙트는 다른 방식으로 작동하고 사용자에게 다른 기능을 제공해야 합니다. 설명된 동작은 경매, 도박, 크라우드 펀딩 등 다양한 사용 사례에서 관찰할 수 있습니다. Solidity 문서 조차도 일반적인 패턴 중 하나로 나열하여 그 관습을 인정합니다. 하나의 상태가 다른 상태로 전환될 수 있는 다양한 방법이 있습니다. 상태가 함수의 끝으로 끝나는 경우도 있고 지정된 시간 후에 상태가 전환되어야 하는 경우도 있습니다. Implementation 섹션에서 다양한 가능성에 대해 자세히 설..
solidity 패턴 분석 - Guard Check Guard Check 가드체크란? 스마트 컨트랙트의 입력 매개변수가 예상대로 작동하는지 확인. Motivation 일반 법률 계약과 마찬가지로 스마트 컨트랙트에서는 계약 논리가 특정 요건을 충족한 후, 적용되도록 되어 있는 경우가 많습니다. 예를 들어, 유산은 유언자가 사망한 후에만 상속인에게 지급되어야 한다. 라는 변호사 혹은 공증인이 있는 반면 블록체인에서는 규제기관, 중재자가 없기때문에 스마트 컨트랙트가 설계된 로직대로 작동하고 있는지에 대한 일종의 가드나 견제가 필요합니다. 스마트 컨트랙트는 설계된 대로 모든 과정이 검증되어야만 실행되어야 합니다. 혹시나 컨트랙트에 결함이 있다면 진행된 변경 사항을 원상태로 복구 시킬 것입니다. 이를 달성하기 위해, 솔리디티는 EVM이 오류를 처리하는 방법을 사용..
Opensea 클론코딩 Opensea란? Opensea 에서는 수많은 NFT가 거래되고 있습니다. 오픈씨가 지원하는 체인은 이더리움, 폴리곤, 그리고 클레이튼이다. 오픈씨는 결제와 경매를 위해 Wrapped Coin을 사용하며, ETH는 WETH, KLAY는 WKLAY의 형태로 같은 가치를 지닌 토큰 및 NFT를 생성해 거래를 하며, 개인간의 NFT 거래소이다. 1. react로 기본 뼈대만들기 NFT를 보여주기 위한 dApp 개발을 위한 리액트 뼈대를 설정 npx create-react-app web3-practice code web3-practice create-react-app 명령어가 적용되지 않는 문제점이 있었다. 다른곳에 리액트 5.0.0이 깔려있어서 그런 것인지, 기존의 다른곳에 설치된 리액트를 삭제. 결국엔 4...
Truffle을 이용한 ERC-721 개발 Truffle 이란? 트러플(Truffle)은 이더리움 기반 디앱(DApp)을 쉽게 개발할 수 있도록 도와주는 블록체인 프레임워크이다. 스마트 컨트랙트 컴파일, 배포, 관리, 테스트까지 쉽게 할 수 있다. ERC-721 이란? ERC-721 (Ethereum Request for Comment721)은 NFT의 표준안이다. NFT는 대체불가토큰(Non Fungible Token)의 약자로 대체 불가능한 토큰이라는 의미이다. 따라서 ERC-721로 발행되는 토큰은 대체 불가능하며 모두 제 각각의 가치(Value)를 가지고 있다. 0.개발 환경 구축 로컬에서 NFT를 개발하기 위해선 Truffle과 Ganache를 사용먼저, 새로운 폴더를 생성하고 Truffle을 이용한 개발 환경을 준비한다. # 폴더 생성..
Mnemonic Wallet - 개발 eth-lightwallet 모듈을 이용하여 간단한 Mnemonic Wallet을 개발해보고, Postman을 이용하여 API 테스트를 해보고자 한다. 먼저 사용할 Lightwallet에 알아보자. 깃허브링크 : https://github.com/ConsenSys/eth-lightwallet LightWallet은 이더리움 노드를 실행하지 않는 경우에도 이더리움 Dapp을 실행할 수 있도록 암호화된 키를 저장할 수 있는 HD wallet이다. 1. 설치 npm install eth-lightwallet 2. eth-lightwallet 의 내장되어있는 keystore 함수를 사용하여 개발 keystore.generateRandomSeed() 먼저, 임의의 12개의 단어 시드로 구성된 문자열을 생성하고 반..
Mnemonic Wallet - 개발이론 니모닉(Mnemonic)이란? 니모닉(Mnemonic)이란 지갑을 복구하기 위한 12개의 단어이다. 개인 키가 너무 복잡한 단어들로 구성되어 있기 때문에, 이를 쉽게 입력할 수 잇도록 갖춰진 형식이다. 니모닉의 어원은 그리스 신화의 기억의 여신 므네모시네(Mnemosyne)에서 유래되었다. 므네모시네의 자녀인 뮤즈(Muses)는 올림포스 신들의 축제에서 아폴론을 도와 음악을 연주 하였는데, 악보가 없는 세계라 기억력에 의존하여 연주할 수 있었다고 한다. 그래서 니모닉이라는 어원은 "기억"에 기반하고 있다. 니모닉은 단어 12개를 순서대로 맞추는 것으로 암호화된 보안 비밀번호 방식으로 이 니모닉의 문자 배열을 초기대로 하지 못하면 어느 누구도 지갑을 열 수 없다. 처음 내 지갑 만들기를 실행했을 때 지갑에..
블록체인과 암호화폐 블록체인 기술을 학습하기에 앞서, 블록체인 기술이 필요한 이유를 이해해보는 글입니다. 사토시 나카모토는 2008년 금융위기를 통해 신뢰를 기반으로 한 현재의 금융 시스템에 한계를 느끼고 비트코인을 개발하였습니다. 비트코인의 배경을 이해하기 위해서는 오늘날 화폐는 어떤 특징을 가지는 지, 또한 오늘날의 금융 시스템은 어떤 문제를 가지게 되는지 이해해야 합니다. 이후 암호화폐의 핵심 기술인 블록체인이 무엇인지 확인하고, 비트코인과 이더리움에 대해 알아봅시다. 기존의 금융 시스템 실물 화폐 특정한 물건을 화폐로 정해서 사용했습니다. (ex. 조선시대 - 쌀) 실물 화폐는 내구성이 없었으며, 상품마다 질이 달랐고, 휴대성이 없었습니다. 금속 화폐 실물 화폐의 단점을 보완하기 위해 금속 화폐가 출현했습니다. 금속..