전체 글 22

프로젝트2 회고 - Web2.0 blockchain community 만들기

프로젝트 개요 지난 2주간 두 번째 프로젝트인 Web2.0기반 블록체인 커뮤니티 을 작업했다. CoCoFarm은 Steamit이라는 커뮤니티를 본보기로 삼아 제작한 sns 공간으로써, 댓글과 좋아요를 많이 모을수록 'CoCo'토큰을 더 많이 배부받을 수 있고, 그렇게 모은 토큰을 기반으로 관리자로 전직할 수 있는 커뮤니티이다. 내가 맡은 역할은 프론트, 컨트랙트 추가 작업 그리고 약간의 백엔드이다. 첫 일주일간은 팀원들과 협의하여 기능구성과 프론트 목업구성 위주로 작업했고, 남은 기간에는 백엔드 api를 기반으로 기능을 엮은 뒤 컨트랙트 추가 작업, 서버 작업 보조를 진행했다. 이번 프로젝트는 블록체인과의 상호작용도 모두 백엔드에서 진행하는 만큼 서버단에 작업 요구량이 많았기 때문에 프론트를 일찍 끝내고..

BlockChain 2022.05.02

OpenSea Clone Coding Project - Whale

프로젝트 개요 지난 일주일 간 첫 번째 프로젝트인 오픈씨 클론코딩, 을 작업했다. 내가 맡은 파트는 프론트 + web3로써, 전체적인 프론트 디자인 구상 및 구현, 그리고 지갑 연동 및 트랜잭션 전송을 위한 코드를 작성했다. 클라이언트에서 구현하고자 한 기능은 메인 페이지를 제외하고 총 5가지로, NFT 민팅 기능, 구매 기능, 판매 기능, 그리고 본인이 소유한 NFT를 확인할 수 있는 Mypage, 모든 NFT를 확인할 수 있는 Explore페이지로 구성되어 있다. Mint, Sell, Buy 페이지의 경우 web3-contract를 이용해 Robsten 네트워크 상에 올라가 있는 컨트랙트와 직접 소통하도록 구현했다. 서버는 이 정보를 주기적으로 읽어와서 DB테이블을 업데이트한다. 그 외에 MyPage..

BlockChain 2022.04.18

KAS를 사용해서 간단한 서버-클라이언트 프로젝트 만들기

이번에는 KAS를 사용해서 간단한 서버-클라이언트를 작성해보고자 한다. 기능은 총 3가지로, 아래와 같이 구현하고자 했다. 최신 블록 넘버 받아오기 EOA 계정을 입력해서 계정 정보 받아오기 KAS basic 저장소에 신규 계정 생성하기 https://github.com/EunsuGoh/SimpleEtherscanWeb3 GitHub - EunsuGoh/SimpleEtherscanWeb3 Contribute to EunsuGoh/SimpleEtherscanWeb3 development by creating an account on GitHub. github.com 태초에 web3가 있었다.. 위 레포지토리는 비슷한 느낌의 web3 기반 프로젝트이다. 위 프로젝트에서 web3 대신, caver-js를 사용..

BlockChain 2022.04.06

Upgrade ERC20 - Owner 추가 및 Token Lock 재사용

이번에는 ERC20토큰 발행에 사용했던 라이브러리인 OwnerHelper를 이용해 Owner를 여러 명으로 추가하고, Token Lock 기능을 일회성이 아닌 재사용이 가능하도록 수정해보았다. abstract contract OwnerHelper { address private _owner; event OwnershipTransferred(address indexed preOwner, address indexed nextOwner); modifier onlyOwner { require(msg.sender == _owner, "OwnerHelper: caller is not owner"); _; } constructor() { _owner = msg.sender; } function owner() publ..

BlockChain 2022.04.06

commit reveal scheme

시작하며.. 스마트 컨트랙트 상에 올라가는 인풋 데이터를 암호화 할 수는 없을까? 그리고 그 데이터를 컨트랙트 코드 위에서 복호화 해서 활용할 방안은 없을까? 특별한 경우를 제외하면 스마트 컨트랙트에 입력하는 인풋 데이터를 암호화할 필요는 없다. 컨트랙트 위에 올리는 데이터는 모두 공개될 뿐만 아니라, 컨트랙트 코드 자체도 공개가 되기 때문이다. 하지만 특정 경우에는 컨트랙트에 암호화된 데이터를 받아야 하는 경우가 있다. 1. 가위바위보 게임 만들기 : 방장이 게임방을 만들고, 본인이 가위, 바위, 보 중에 무엇을 낼지 기입한다. 이 때 참가자는 원한다면 얼마든지 방장이 게임방을 생성한 트랜잭션에서 방장이 기입한 데이터를 열람할 수 있다. 이런 경우에 방장의 데이터를 암호화할 필요가 있다. 2. 솔리디티..

BlockChain 2022.03.22

Dapp 질의응답

Q. Dapp이 무엇인가? Dapp(Decentralized Application)은 탈중앙화 분산 앱을 뜻한다. 이더리움 위에서 동작하면 이더리움 디앱, 이오스 위에서 동작하면 이오스 디앱 이라고 한다. 자체적인 토큰을 발행해서 토큰 이코노미를 만들어 가는 특징이 있다. Q. Dex / Defi / NFT 는 무엇인가? 1. Dex : Decentralized Exchange. 탈중앙화된 거래소를 의미한다. 중간에 개입하는 제3기관(서비스 운영자) 등이 없고 거래자들간의 거래(P2P)가 가능하다. Uniswap, Sushiswap 등이 여기에 해당한다. 2. Defi : Decentralized Finance. 탈중앙화 금융을 의미한다. 주로 암호화폐를 담보로 걸고 일정 금액을 대출 받거나, 다른 담보..

BlockChain 2022.03.15

Key stretching, 이중 지불 문제를 공부하며 이해 못한것들

Key Stretching Key Stretching 은 솔팅의 결과값을 다시 해시 함수의 입력값으로 하여 n번 해시 하는 방법을 의미한다. 여기서 학습 자료의 이해에 어려움을 겪었다. '솔트 결과값을 다시 솔트함수의 입력값으로 사용' 이라고 적혀 있어 '솔트 함수'가 어떤 녀석인가.. 한참 생각했는데 1) 솔트 + 데이터 -> 해쉬값 A' A' + 솔트 -> 해쉬값 A'' ... 2) 솔트 + 데이터 -> 해쉬값 A' A' -> 해쉬값 A'' .... 위 두 개 중 어떤 구조인지 궁금해서.. 서치를 좀 해봤는데 확실하진 않지만 2번인듯 하다. PBKDF2에서 보면 솔트값은 처음에 1번만 넣고 2048 rounds의 해쉬를 진행하는것으로 보이기 때문. 그러나 확실하지 않기에.. 정답을 알게되면 다시 포스..

BlockChain 2022.03.15

그리디(Greedy 알고리즘)

그리디 알고리즘이란 현재 , 지금 당장 좋은 것만 고르는 알고리즘을 의미한다. 유형이 매우 다양하기 때문에 암기로 해결되는 알고리즘은 아니다. Greedy(탐욕적인) 라는 단어 뜻 답게 최적의 상황만 쫓아서 솔루션을 찾는 방법을 의미한다. 솔루션이 정당한지 검토하는 과정이 필요하다. * 코테 문제의 유형 파악이 잘 안될 때, 그리디를 의심해 볼 수 있다. Reference 이것이 코딩 테스트다 with 파이썬, 나동빈

Algorithm 2022.03.15

웹 캐시

HTTP 예시 - 브라우저 캐시 저장은 헤더에 Cache-control속성을 통해 캐시의 유효 시간 지정(초),(응답 헤더) - 이렇게 하면 응답을 받고 나서 브라우저 캐시에 응답 결과를 지정된 시간만큼 저장 - 두 번째 요청부터는 캐시 우선 조회 - 유효 시간 초과 시 캐시에서 삭제되므로, 서버에 재요청 (유효 시간 초기화) Cache-Control 예시 - 캐시 유효 시간 : Cache-Control : max-age = 60 (초단위) - 데이터는 캐시해도 되지만 항상 Origin 서버에 검증 후 사용 : Cache-Control : no-cache - 데이터에 민감 정보가 있으므로 저장 불가(메모리에서 사용 후 빠르게 삭제) : Cache-Control : no-store 캐시 검증 헤더(Last..

network 2022.02.22