목록전체 글 (67)
TIL 블로그
따로 하고 있는 공부가 있어 그동안 TIL을 방치해왔습니다. 지난 3월 초부터 최근까지 드림플러스 아카데미라는 곳에서 웹3 보안에 대한 교육을 받았습니다. 힘든 시간도 있었지만 교육은 성공적으로 이수했고, 모든 과정이 끝난 뒤 채용 과정을 거쳐 티오리라는 회사에 입사하게 되었습니다. 드림플러스 아카데미에 대해 하고 싶은 말이 많지만 과정에 대한 모든 사항들은 언급할 수 없도록 되어 있어 말을 아끼겠습니다. 웹3 커리어를 시작하기에 이만한 교육 프로그램도 없을 것입니다. 하지만 교육과는 별개로 본인이 배울 거리를 찾아다녀야 한다는 점은 분명하다. 현재 웹3 생태계에 뛰어들기란 정말 어렵다고 생각합니다. 많은 데이터가 정제되어 있지 않고, 잚못된 지식을 보더라도 사실 확인이 매우 어렵기 때문입니다. 웹3에서..
솔라나는 빠른 TPS로 유명한데, 이는 트랜잭션의 비동기 처리를 가능하게 체인을 구성했기 때문이다. 그러면 sync가 중요한 블록체인에 어떻게 비동기 처리를 적용한 것일까? 솔라나만의 account 모델링이 이를 가능하게 한다고 한다. Account 솔라나는 기존의 은행 계좌와 같이 lamport라는 fund를 갖고 있다. 이는 리눅스 파일과 같이 key를 통해 지정이 가능하다. key로는 ed25519 pubkey / program-derived account address(ed25519 커브를 통해 만든 32바이트 값) / 32byte의 ed25519 pubkey hash 등이 쓰일 수 있다. Fee Account 어떠한 트랜잭션에 대한 cost를 지불하는 계정이며, 트랜잭션을 발생시키는 첫 계정이다..
정말 오랜만에 글을 쓴다! 그동안 블록체인 공부를 따로 하느라 (이에 관해서 별도로 글을 작성할 예정이다.) 블로그에 글을 거의 못썼는데, 앞으로는 하루에 두시간 씩은 꼭 여유를 내서 따로 공부를 할 예정이다. 그동안 공부했던 솔리디티는 이제 어느정도 익숙해졌고, 니어나 솔라나 환경에 익숙해지려면 Rust 공부가 필수적이라고 느껴져서 급선무로 두고 있다. 더 여유가 된다면 ZK 등의 암호학도 다뤄볼 예정이다. 각설하고, 오늘 공부를 기록해보겠다. Error Handling Rust의 에러는 Recoverable과 Unrecoverable 두가지로 나뉜다. Unrecoverable Error Unrecoverable 에러는 단순한 에러라고 할 수 있다. 프로그램 내에서 자체 회복할 수 없을 때 발생한다. ..
패스트캠퍼스 강의를 듣던 도중 수강자를 대상으로 * Rust 설치 $ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh $ nano ~/.zshrc // add export PATH="$HOME/.cargo/bin:$PATH" $ rustc --version rust는 c를 오버랩한다. 그냥 프로젝트 만들고 .rs 소스코드 써서 rustc xx.rs 하면 컴파일이 된다. fn main() { println!("Hello World!"); } $ rustc main.rs ./main >> Hello World! * Rust 패키지 매니저 cargo cargo는 rust 설치와 함께 설치된다. $ cargo new hello_cargo 를 통해 ..
Next.js를 이용해 프론트엔드를 구성할 것이다. 최종적으로는 우주 배경에 행성 이미지들을 띄워주고, mint 버튼을 누르면 그 중 하나가 랜덤으로 골라져서 발행되는 페이지를 만들 것이다. * 프로젝트 생성 프로젝트를 만들어주자. $ yarn create next-app --typescript mint 페이지와 list 페이지의 뼈대를 만들어주자. // pages/{mint.tsx, list.tsx} import { NextPage } from "next"; import React from "react"; const Mint: NextPage = () => { return mint } export default Mint; $ yarn dev 를 통해 렌더링할 수 있다. npm start와 같다. $ y..
* 로컬에서 IPFS 띄우기 https://github.com/ipfs/kubo/releases/tag/v0.14.0 Release v0.14.0 · ipfs/kubo Kubo v0.14 release Overview Below is an outline of all that is in this release, so you get a sense of all that's included. 🛠 BREAKING CHANGES Removed mdns_legacy implementation 🔦 Highlights 🛣️... github.com 운영체제에 맞는 IPFS를 다운받고, 압축을 풀어준다. $ ./ipfs init $ ./ipfs daemon https://localhost:5001/webui 여기로 IPF..
* NFT란? 흔히 우리는 NFT를 대체 불가능 토큰이라고 알고 있다. 하지만 대체 불가능 토큰이 뭔데?라고 물어보면 답하기가 어렵다. 일단 대체 가능 토큰이 뭔지에 대해 알아보자. 대체 가능 토큰은 우리가 일반적으로 아는 화폐와 같다. - Divisible: 토큰 하나가 여러개로 분리되거나 합쳐질 수 있다. 만원짜리 한장이 천원짜리 열장이 될 수 있다. - Non-unique: 각 토큰은 고유하지 않고 같은 가치를 가진다. 소유주가 누구건 천원짜리 한장의 가치는 같다. - Interchangable: 토큰끼리의 상호 교환이 가능하다. 만원짜리 한 장과 또다른 만원짜리 한 장은 같은 존재로 취급받기 때문에 교환이 가능하다. 하지만 대체 불가능 토큰은, - Non-divisible: 미술관의 그림과 같이 ..
최종적으로 개발해야하는 API는 위와 같다. 1. LotteryV2 Controller 구현 input: account 이름 output: wallet account, private key, enter amount + API response controllers에 LotteryV2Controller.js를 생성한다. 이 컨트랙트는 request로부터 account의 이름을 받은 뒤, DB에서 이와 매핑되는 wallet 정보를 읽어와 LotteryV2Interactor 클래스의 enter 함수로 wallet account, private key, enter amount를 넘겨준다. 이때 LotteryV2Interactor로부터 받아온 트랜잭션 결과를 response에 담아서 리턴해준다. request로부터..