목록개발 (24)
devops
ERC1155 ERC1155는 가스 효율적인 Token Contract를 만들기 위해서 이전 표준을 최대한 활용하기 위해 만들어진 토큰 표준이다. 좀 더 이해하기 쉽게 얘길하자면, 하나의 컨트랙트에서 여러 토큰을 발행해서 관리한다고 볼 수 있다. 심지어 ERC20, ERC721 모두 지원한다. 그래서 Multi-token standard라고 불린다. ERC1155의 특징은 단일 스마트 컨트랙트를 이용해서 여러 토큰을 한번에 표현 각 토큰 마다 고유한 id 를 기준으로 구분된 balanceOf 메소드를 호출 가능 모든 state를 하나의 컨트랙트에 존재하기 때문에 단일 트랜잭션에서 다양한 토큰 관리 가능 Features Batch Transfer: 여러 에셋을 하나의 Tx로 전송가능 Batch Balanc..
ERC721, NFT는 크립토에 관심이 없는 사람들도 아는 대표적인 토큰 유형으로 toknID 기준, 다른 토큰들과는 구별되는 고유한 특성이 있다. 워낙 유명해서.. 굳이 소개할 필요는 없을 것같다. 내가 활동하는 CURG 라는 블록체인 학회에서 관련 코드를 재정리했기 때문에 코드 구성을 한번 확인하고 정리해보려 한다. SolRoot/token/ERC-721 CURG 학회에서 진행하는 오픈소스 프로젝트인 SolRoot에서 ERC-721 코드 디렉토리는 다음과 같이 구성되어 있다. (Extension은 제외) ERC721Base.sol ERC721Extension.sol ERC721Metadata.sol ERC721SlotBase.sol ERC721Utils.sol IERC721.sol IERC721Enu..
짧게 TBA라고도 하는 ERC-6551은 NFT의 오너가 여러 컨트랙트를 컨트롤할 수 있는 권한을 가지고 있는 것이라고 보면된다. 즉, NFT + CA의 결합이라고도 보는데, 이 TBA의 NFT는 '지갑의 역할을 하기 때문에 누군가에게 양도되는 순간, 이 NFT에 있는 모든 자산도 그대로 양도된다. 디사이퍼 미디움에 따르면, 여러 유스케이스를 예상할 수 있다. Gas Fee 절약 NFT를 살때 개별 NFT마다 Tx가 일어나야했지만, TBA에 NFT Collection이 있다면 한번의 Tx로 모든 NFT를 구매할 수 있음 게임의 경우에도 하나의 NFT TBA안에 캐릭터와 물약, 아이템이 있다면 한번에 거래가 가능 보안의 향상 NFT 판매 시점에 ERC-20 토큰을 내재한 채로 판매하여 에어드랍 가능 별도의..
OpenZepplin 오픈제플린은 EVM 스마트 컨트랙트 개발에 많이 사용되는 오픈 소스 라이브러리다. 사실상 Solidity 기반 컨트랙트 개발에 있어선 표준으로 자리 잡을 정도로 사용된다. Security-Centric : 보안 전문가들에 의해서 검토되어 있으며, 실사용되고 있는 검증된 컨트랙트들로 구성되어 있다. Standard Contracts : ERC-20, ERC-721과 같은 표준 토큰 컨트랙트를 제공함. Reusable Components : 공통기능을 제공하는 다양한 스마트 계약 구성 요소를 포함하고 있어서, 개발자들은 이를 조합해 복잡한 기능을 빠르고 안전하게 구현가능. Community-Driven : 활발한 커뮤니티에 의해 지원되고 있으며, 보안과 최적화 및 기타 주제에 대해서 지..
IBFT(이스탄불 비잔티움 결함 허용) 높은 보안과 투명성을 유지하면서, 공개를 통한 합의 신뢰모델을 채택하고 있다. 이는 합의 달성이 가능한 소수의 private 노드와 블록 생성 결과에 접근과 검증이 가능한 노드로 구성된다. 매 라운드마다 Proposer를 뽑고, 나머지 노드는 Validator가 되어 검증을 하게된다. x된 Validator3은 검증자로서 제대로 작동을 못하는 상태로 가정한다. (악의적인 공격도 포함) Proposer는 pre-prepare 단계에서 블록을 만들어서 다른 노드에 제안을 하게된다. prepare 단계에서 validator 1, 2은 자신을 제외한 다른 노드들에게 잘받았다는 메시지를 다시 보낸다. 단, Validator 3은 보내지 못한다. 마지막 commit 단계에서 ..
TEST - 1 function hello(){ return 'hello'; } async function helloAsync(){ return 'hello Async'; } console.log(hello()); helloAsync().then((res)=>{ console.log(res); }) async를 선언한 함수의 리턴값은 resolve의 결과값이 된다. TEST - 2 function delay(ms){ return new Promise((resolve)=>{ setTimeout(resolve, ms) }) } // 3초 기다린뒤 hello Async 반환하는 것 async function helloAsync(){ return delay(3000).then(()=>{ return "hello..
비동기 작업이 가질 수 있는 상태 pending : 대기상태, 비동기 작업이 진행 중 fulfilled : 비동기 작업이 의도한대로 작업 완료된 상태 rejected : 비동기 작업이 실패한 상태 비동기 처리는 이 세가지 상태를 갖는다. 한 번 성공 및 실패하면 거기서 끝난다. fulfilled로 가는 과정을 해결(Resolve)라고 하며, rejected로 가면 거부(Reject)되었다고 한다. TEST - 1 function isPositive(number, resolve, reject){ setTimeout(() => { if(typeof number === "number"){ //성공 -> resolve resolve(number >=0? "양수":"음수") } else { //실패 -> reje..
JSON.parse JSON 문자열을 파싱한다. 파싱은 문장을 문법적 부분으로 나누고, 나누어진 부분을 식별하는 것이다. 쉽게 말해서, JSON을 : 관계로 식별한다. client-server 통신에서 server가 client에게 전달하는 데이터는 문자열이다. JSON.parse()를 사용하면 데이터를 파싱해서 Javascript 객체로 변환해준다. const jsonStr = '{"Age": "30", "Name": "Kang"}'; const obj = JSON.parse(jsonStr) // JOSN.parse사용 console.log(obj) 파싱 전의 데이터는 단순 문자열이기 때문에 parse를 해야말 데이터에 접근할 수 있는 Javascript Object가 된다. 파싱이되어야 원하는 key..
프롭스는 컴포넌트에 데이터를 전달하는 방법이다. 프롭스는 리액트를 대표하는 개념 중 하나이다.
상태라는 것으로 React를 설명할 수 있다고 해도 과언이 아니다. State란? 배고픔에 대한 상태가 적당함, 배고픔, 배부름을 인간의 허기 상태의 종류다. 이와같이 상태란 계속해서 변화하는 특정 상태며, 상태에 따라 다른 행동을 하게된다. React에 빗대어 설명하자면, 어떤 컴포넌트가 '상태'를 관리하게 된다. State 사용 실습 // Counter.js 코드 import React, {useState} from 'react'; const Counter = () => { //0에서 출발, 1씩 증가, 1씩 감소하는 Counter 상태 const [count, setCount] = useState(0); //setCount는 count상태를 변화시키는 역할, 0은 초기값 console.log("co..